回复 15# 楼上风云
回复 9# 魔导
回复 1# 绿色风
这就是QQ在线状态检测的原理。
;~原理是调用QQ的在线API,然后通过返回的数据长度来判断。 http://wpa.qq.com/pa?p=1:348251229:41
Local $host="wpa.qq.com"
Local $qqnumber=InputBox("QQ号","请输入你要检测的QQ号","14958306",'',200,80)
$sData='GET /pa?p=1:'&$qqnumber&':41 HTTP/1.1'&@crlf&'Accept: */*'&@crlf&'Host: wpa.qq.com'&@crlf&@crlf ;这是要发送的数据
TCPStartup() ;启动TCP
$sIp = TCPNameToIP($host) ;将域名转为IP
$sSocket = TCPConnect ($sIp, 80) ;打开80端口
TCPSend ($sSocket, $sData) ;发送http头
Do
$sRecvHeader = TCPRecv($sSocket, 1)
Until $sRecvHeader <> "" ;接收数据,指导数据不为空
Do ;头部结束后,有2个换行符
$sRecvHeader &= TCPRecv($sSocket, 1)
Until StringInStr($sRecvHeader, @Crlf & @Crlf) ;接收返回头
$sRecvBin = TCPRecv($sSocket,2048) ;接收返回数据
If StringLen($sRecvBin)=2506 Then ;如果返回数据长度是2506 则认为不在线
MsgBox(64,"提示","你检测的帐号"&$qqnumber&"不在线!")
Else ;否则认为在线。
MsgBox(64,"提示","你检测的帐号"&$qqnumber&"在线!")
EndIf
TCPCloseSocket($sSocket)
TCPShutdown()
|