小改一下,本机测试通过。一般来说,本机通过就可以了,或者你可以开个虚拟机测试一下。
至于你说的两台内网机器UDP传送成功,我注意到当时你和你朋友正在开着QQ通信,而QQ走的正是UDP协议。具体原因请阅读 http://www.ppcn.net/n1306c2.aspx “P2P之UDP穿透NAT的原理与实现”。
;server
$g_ip = @IPAddress1
$iPort = 65534
TCPStartup()
$MainSocket = TCPListen($g_ip, $iPort)
While 1
$ConnectedSocket = TCPAccept($MainSocket)
If $ConnectedSocket <> -1 Then
While 1
TCPSend($ConnectedSocket, "1")
If @error Then ExitLoop
Sleep(1000)
WEnd
EndIf
WEnd
;client
$t_ip = "" ; 上面server端IP地址
$iPort = 65534
TCPStartup()
$socket = TCPConnect($t_ip, $iPort)
If @error Then
MsgBox(0, "Warning", "Connect error")
Else
While 1
$recv = TCPRecv($socket, 256)
If @error Then ExitLoop
If $recv <> "" Then
MsgBox(0, "recv", '[' & $recv & ']')
ExitLoop
EndIf
WEnd
EndIf
|