zhouhaijin 发表于 2008-12-28 00:54:23

[已解决]UDPOpen可以接收数据吗?

本帖最后由 zhouhaijin 于 2014-12-29 15:47 编辑

我看有些软件可以一个端口连接 服务器也可以发数据给客户机,客户机也可以发数据给服务器

我服务器是互联网IP,客户机是另一个互联网下的局域网里的机器
这样的情况下服务器可以发数据到客户机吗?

服务端代码
UDPStartup()
$socket = UDPBind("0.0.0.0",8976)

While 1
    $data = UDPRecv($socket,50)
    If $data = "1" Then
      MsgBox(0,"","0")
      $send=UDPSend($socket,"ok")
EndIf
sleep(10)
WEnd

Func OnAutoItExit()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc



客户端代码
UDPStartup()
$socket = UDPOpen("服务端IP", 8976)

$status = UDPSend($socket,"1")
While 1
        $data = UDPRecv($socket,50)
        If $data = "ok" Then
                MsgBox(0,"ok","ok")
        EndIf
WEnd

Func OnAutoItExit()
    UDPCloseSocket($socket)
    UDPShutdown()
EndFunc



帮助里
UDPBind的说明好像可以一样
返回一个数组: $array 包含一个真实的套接字(socket), $array 包含一个指定的IP地址, $array 包含端口. 我们需要这个信息才能在后面调用 UDPSend(), where we pass this socket structure/array(未知意思) .

他这里说明说可以用这个信息让UDPSend()用

[ 本帖最后由 zhouhaijin 于 2008-12-28 00:58 编辑 ]

zhouhaijin 发表于 2008-12-28 23:40:24

服务器是互联网IP,客户机是另一个互联网下的局域网里的机器
这样的情况下服务器可以发数据到客户机吗?

sanhen 发表于 2008-12-29 00:09:20

暂时没有条件测试,理论上应该是可以的。

akmm88 发表于 2008-12-31 11:51:12

取决于服务端 端口是否向外网开放。

zhouhaijin 发表于 2008-12-31 18:50:56

我想把UDPBind反过来用,就是服务端UDPBind收到客户端信息后再服务端发送信息给客户端.
我就是服务端发送信息到客户端作不了(客户端不能UDPBind,客户端是在另一个局域网里,客户端很多就不能端口映射)
页: [1]
查看完整版本: [已解决]UDPOpen可以接收数据吗?