lanfengc 发表于 2010-4-18 18:33:00

关于UDPSEND这个函数的帮助文件的一点小问题

帮助文件里的原始代码执行的时候,如果输入的字符为中文字符,那么,服务器端接受的时候就会出现接受不正常。 特此,我改了这个帮助文件。 将代码发上来。; 开始 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
页: [1]
查看完整版本: 关于UDPSEND这个函数的帮助文件的一点小问题