Lua和多播
问题描述:
我试图从python转换一些代码到lua。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代码正在到达超时。
答
Luasocket存储库有关于UDP上的sending和receiving消息的示例。这个例子中的代码看起来和你的代码类似,正如Egor所建议的,它使用receivefrom
。虽然由于您使用setpeername
,receive
也应该工作according to the documentation。
只是一个猜测:尝试'udp:receivefrom()'。 –
@EgorSkriptunoff可预见的微妙,让面包屑走上启蒙的道路...... –