帮助文件里的原始代码执行的时候,如果输入的字符为中文字符,那么,服务器端接受的时候就会出现接受不正常。 特此,我改了这个帮助文件。 将代码发上来。; 开始 UDP 服务
UDPStartup()
; 注册清理函数.
OnAutoItExitRegister("Cleanup")
; 打开一个"套接字"("SOCKET")
$socket = UDPOpen(@IPAddress1, 65532)
If @error <> 0 Then Exit
$n="" ;用来输入数据
While 1
Sleep(2000)
$n = InputBox(123," ","测试数据","",200,80)
Local $arry=StringToASCIIArray($n) ;将输入的数据变成ASC码。
;udp发送需要对中文字符实行补空位操作。要不发送的时候会出现发送数据长度不足。
For $i=0 To StringLen($n)-1 Step 1
If $arry[$i]>255 Then
$n=$n&" "
EndIf
Next
$status = UDPSend($socket, $n)
If @error=-1 Or @error=-2 Or @error=-3 Or @error=1 Or @error=2 Then
MsgBox(0, "错误", "当发送 UDP 消息时发生错误: " & @error)
Exit
EndIf
WEnd
Func Cleanup()
UDPCloseSocket($socket)
UDPShutdown()
EndFunc
原始代码为:; 开始 UDP 服务
;==============================================
UDPStartup()
; 注册清理函数.
OnAutoItExitRegister("Cleanup")
; 打开一个"套接字"("SOCKET")
;==============================================
$socket = UDPOpen("127.0.0.1", 65532)
If @error <> 0 Then Exit
$n=0
While 1
Sleep(2000)
$n = $n + 1
;发送的时候不对字符串进行检测,会出现发送长度与字符串实际长度不符。
$status = UDPSend($socket, "消息 #" & $n)
If $status = 0 then
MsgBox(0, "错误", "当发送 UDP 消息时发生错误: " & @error)
Exit
EndIf
WEnd
Func Cleanup()
UDPCloseSocket($socket)
UDPShutdown()
EndFunc
|