LuaSocket (UDP) 不接收数据报

标签 lua udp datagram luasocket

我正在为我正在进行的项目试验 LuaSocket。我选择了 UDP 作为我的协议(protocol)。

在网上寻找文档和教程,我试图创建一个客户端-服务器对来进行测试和学习。

根据我所阅读的内容,以下代码应该可以工作。但是,似乎只有服务器工作正常。客户端发送消息,但不会收到服务器的回复。

感谢您提供的任何帮助。

服务器:

-- Server
#!/usr/bin/env lua5.1

local socket = require("socket")

udp = socket.udp()
udp:setsockname("*", 53474)
udp:settimeout(0)

while true do
    data, ip, port = udp:receivefrom()
    if data then
        print("Received: ", data, ip, port)
        udp:sendto(data, ip, port)
    end
    socket.sleep(0.01)
end

客户:

-- Client
#!/usr/bin/env lua5.1

local socket = require("socket")

udp = socket.udp()
udp:setpeername("127.0.0.1", 53474)
udp:settimeout(0)

udp:send("Data!")
data = udp:receive()
if data then
    print("Received: ", data)
end

最佳答案

你设置的超时值为0,导致客户端每次都超时。

要修复它,给它一个正的超时值:

udp:settimeout(1)

或者将其设置为nil 或一个负值,这样它就会无限期阻塞:

udp:settimeout()

udp:settimeout(-1)

关于LuaSocket (UDP) 不接收数据报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28105571/

相关文章:

android - Android4.0及之前版本UDP发送

java - 在 Java 中正确解析 BitTorrent UDP 通告响应

c - 如何准备 UDP 数据报发送到服务器

linux - 错误 : Lapack library not found in compile time (zerobrane, lua,手电筒)

c - 'SIGPIPE' : undeclared identifier in luasocket-2. 0.2

c++ - 如何从 C++ 监听 Lua 中的特定函数调用?

android - 在 Android NDK 上构建 OpenSSL

lua - 混合逻辑和关系运算符的评估顺序?

java - 当我尝试从 IP 不是 192.168.X.X 的网络上的服务器接收数据包时,MulticastSocket.receive() 挂起

c - 为什么netcat收不到第二个广播报文?