找回密码
 加入
搜索
查看: 3131|回复: 0

[BUG报告] 关于UDPSEND这个函数的帮助文件的一点小问题

[复制链接]
发表于 2010-4-18 18:33:00 | 显示全部楼层 |阅读模式
帮助文件里的原始代码执行的时候,如果输入的字符为中文字符,那么,服务器端接受的时候就会出现接受不正常。 特此,我改了这个帮助文件。 将代码发上来。
; 开始 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
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-21 19:56 , Processed in 0.066552 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表