中国程序员联盟 正在重新改版中ing 不便之处还请见谅 改版后将内容涉及java delphi .net php
 
  首页 | 数据库开发 | 网络通讯 | 多线程 | 多媒体开发 | 图像处理 | 程序人生 | 系统函数 | 控件开发 | Web服务
 
  当前位置:笨鱼delphi技术网>网络通讯>文章内容

delphi 发送ICQ通知

来源: 关于: 发布时间:2007-06-29   [收藏] [推荐]

  {下面的代码不能解析 wwp.mirabilis.com 的主机名,它直接使用对应的 IP。
  (译者注:其实这只要用 HostByName 函数就可以解决。)} 
  unit unitICQPage; 
  
  interface 
  
  uses 
    Windows, Classes, SysUtils,  Winsock; 
  
  Function ICQPage(dwUIN: DWORD; szFrom, szFromEmail, szSubject, szMsg: String): Integer; 
  
  
  
  implementation 
  
  
  Function ICQPage(dwUIN: DWORD; szFrom, szFromEmail, szSubject, szMsg: String): Integer; 
  {This procedure sends an ICQ page. 
  It uses a raw winsock interface to do this 
  
  Return values: 
     0 = success 
     1 = WSA Error   (WSAGetLastError) 
  } 
  Const 
    ERR_SUCCESS = 0; 
    ERR_WSA = 1; 
  Var 
     MyWSA: WSAData; 
     SIN: TSockAddr; 
     hSocket: TSocket; 
     sRequest: String; 
  Begin 
  
    If WSAStartup(MakeWord(1,1), MyWSA) <> 0 Then Begin 
      //There's nothing to do, it failed! 
      ICQPage := ERR_WSA; //ERROR CODE 
      WSACleanup; 
      Exit; 
    end; 
  
    hSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
    If hSocket = INVALID_SOCKET Then Begin 
      //Unable to create socket :( 
      ICQPage := ERR_WSA; 
      WSACleanup; 
      Exit; 
    End; 
  
    {Setup "target" information} 
    SIN.sin_family := AF_INET; 
    SIN.sin_port := htons(80); //Port 80 is default HTTP (And ofcource the one mirabilis use} 
    {NOTE: The hostname wwp.mirabilis.com should be resolved in code} 
  //  SIN.sin_addr.S_addr := inet_addr(PChar('127.0.0.1')); 
     SIN.sin_addr.S_addr := inet_addr(PChar('205.188.252.120')); 
  
    If connect(hSocket, SIN, SizeOf(SIN)) = SOCKET_ERROR Then Begin 
      //Error while connecting... 
      {Hmm, Now the program should attempt to resolve the hostname wwp.mirabilis.com 
      and attempt to reconnect to that IP 
      But since I do not know how to resolve hostnames:} 
      ICQPage := ERR_WSA; 
      CloseSocket(hSocket); 
      WSACleanup; 
      Exit; 
    end; 
  
    //The socket has connected! 
    Sleep(30); //dunno, I just feel like it ;-) 
  
    sRequest := 'from='+szFrom+'&'+ 
                'fromemail='+szFromEmail+'&'+ 
                'subject='+szSubject+'&'+ 
                'body='+szMsg+'&'+ 
                'to='+IntToStr(dwUIN)+ 
                '&Send=Send+Message'; 
  
    sRequest := 'POST /scripts/WWPMsg.dll HTTP/1.1'+#13#10+ 
                'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, */*'+#13#10+ 
                'Accept-Language: en'+#13#10+ 
                'Content-Type: application/x-www-form-urlencoded'+#13#10+ 
                'Accept-Encoding: gzip, deflate'+#13#10+ 
                'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)'+#13#10+ 
                'Host: 127.0.0.1'+#13#10+ 
                'Content-Length: '+IntToStr(Length(sRequest))+#13#10+ 
                'Connection: Keep-Alive'+#13#10+ 
                ''+#13#10+ 
                sRequest; 
  
  
    If Send(hSocket, sRequest[1], Length(sRequest), 0) = SOCKET_ERROR Then Begin 
      //unable to send 
      ICQPage := ERR_WSA; 
      CloseSocket(hSocket); 
      WSACleanup; 
      Exit; 
    End; 
  
    //Page sent! 
  
    CloseSocket(hSocket); 
    WSACleanup; 
    ICQPage := ERR_SUCCESS; 
  end; //ICQPage 
  
  
  end.

[浏览: 次]   
上一篇:delphi 统计局域网里的工作组数目   下一篇:delphi 网络邻居的列表
[收藏] [推荐] [返回顶部] [打印本页] [关闭窗口]  
    评论加载中…
google adsense热点文章
·delphi 学习WinSocket的编程
·delphi 用Delphi实现远程控制
·delphi 木马DIY
·delphi Delphi实现UDP广播
·delphi 检测计算机的 Internet 连接状
·delphi 获取BIOS信息
·delphi Base64编码转换
·delphi 发送raw IP类型的数据包
·delphi 使用ftp控件下载目录
·delphi 监测TCP IP协议是否安装了
·delphi 编写上网计费软件
·delphi 获取IP地址以及全部TCPIP连接的
     delphi技术网 | firefox 下载 | Avant Browser下载 | dedecms 技术网 | drupal 爱好者 | php 技术网
  Copyright@www.delphichm.com,2006-2009.All Rights Reserved.
 
程序员联盟 | delphi Java .net|QQ:707102932