发送 ICQ 通知原著: Thomas nielsen 问题提出/摘要: 你曾经想过在你的应用程序中包含向一个 ICQ 客户发送一个通知吗?下面就有做法: 回答: {下面的代码不能解析 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
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 ;-)
If Send(hSocket, sRequest[1], Length(sRequest), 0) = SOCKET_ERROR Then Begin //unable to send ICQPage := ERR_WSA; CloseSocket(hSocket); WSACleanup; Exit; End;
问题提出/摘要:
你曾经想过在你的应用程序中包含向一个 ICQ 客户发送一个通知吗?下面就有做法:
回答:
{下面的代码不能解析 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.
我不是sp商家,只是有一个项目,用户要求有发送短信的功能
还有没有其它的解决办法?
我想通过一个sp作为中间厂商来进行,能给提供几个sp吗?
skybird.9s9s.com上发帖子询问应该是很多的
GSM模块是不是连接到串口再接到手机上的设备,如果不是请详细一点说明好吗,大概有多少费用
对方的网页变了就不好办了,但也是个解决办法,有没有相关的例子?
顺便抢眼球
http://expert.csdn.net/Expert/topic/1368/1368166.xml?temp=.1853754
按照CMPP或SPIP写SP网关,使该网关与移动网关(如亚信网关)或联通网关连接上
或者是要一个动态连接库
然后就搞定
直接向移动申请网关不太容易,而且费用较高hhuangchunlin(林之韵):
你说的网络供应商是指哪一种,中国移动还是第三方?
二,用gsmmodem,或者直接找个手机通过数据线连接到电脑上,然后用at命令就ok了。费用都在2000以内。