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代码正在到达超时。

+0

只是一个猜测:尝试'udp:receivefrom()'。 –

+0

@EgorSkriptunoff可预见的微妙,让面包屑走上启蒙的道路...... –

Luasocket存储库有关于UDP上的sendingreceiving消息的示例。这个例子中的代码看起来和你的代码类似,正如Egor所建议的,它使用receivefrom。虽然由于您使用setpeername,receive也应该工作according to the documentation