回复 17楼 easyppt
Lparameters _hSocketLocal stSockAddr, nSize, nIP, szIP, nPort
stSockAddr = Replicate(0h00, 16)
nSize = Len(stSockAddr)
_hSocket = Accept(_hSocket, @stSockAddr, @nSize)
nIP = CToBin(Substr(stSockAddr, 5, 4), '4RS')
szIP = Sys(2600, inet_ntoa(nIP), 16)
szIP = Left(szIP, At(0h00, szIP)-1)
nPort = ntohs(CToBin(Substr(stSockAddr, 3, 2), '2RS'))
WSAAsyncSelect(_hSocket, Thisform.HWnd, 0x464, 33)
Local szReadBuf, nDataLen
szReadBuf = Space(32768)
nDataLen = recv(_hSocket, @szReadBuf, Len(szReadBuf), 0)
lskey=''
nlx=0
If nDataLen>0
szReadBuf = Left(szReadBuf, nDataLen)
nCMD = CToBin(Left(szReadBuf, 1), '1RS')
ls_wz=At('Sec-WebSocket-Key:',szReadBuf)
If ls_wz>0
lskey=Substr(szReadBuf,ls_wz+19,25)
Endif
Endif
lskey=Left(Alltrim(lskey),24)
If Len(Alltrim(lskey))<10
Insert Into ClientInfo Values (_hSocket,szIP,nPort,0,0,'')
Return
Else
Insert Into ClientInfo Values (_hSocket,szIP,nPort,0,0,'')
ENDIF
vRet=getxkey(lskey)
cHandshake = "HTTP/1.1 101 Switching Protocols" + Chr(13)+Chr(10) + ;
"Connection:Upgrade" + Chr(13)+Chr(10) + ;
"Upgrade: websocket" + Chr(13)+Chr(10) + ;
"Sec-WebSocket-Accept:" +vRet+ Chr(13)+Chr(10) + Chr(13)+Chr(10)
ls_fsjg = Thisform.Send(_hSocket,cHandshake,.t.)