Lua和多播

我正在尝试将一些代码从 Python 转换为 Lua。

在 Python 中,相关的代码为:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.settimeout(3)
sock.bind(('239.0.3.138', 3935))
mreq = struct.pack("=4sl", socket.inet_aton('239.0.3.138'), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
print( sock.recv(1500) )

我在 Lua 中要做的是:

udp = socket.udp()
udp:setpeername( '239.0.3.138','3935')
udp:settimeout(3.0)
udp:setoption( "ip-add-membership", { multiaddr="239.0.3.138", interface="*"  } )
print( udp:receive(1500) )

我对 Lua 和网络都不是太熟悉,只是想学习一点。有关我缺少什么的线索吗?

Lua 代码达到了超时时间。

点赞
用户1442917
用户1442917

Luasocket 代码库中有用于通过UDP 发送接收 消息的示例。例子中的代码与您的代码相似,并且使用Egor建议的 receivefrom。尽管如此,由于您使用了 setpeername,根据文档,receive也应该可以工作。 (http://w3.impa.br/~diego/software/luasocket/udp.html#setpeername)。

2015-12-09 22:56:43