Lua和组播

时间:2015-12-09 20:52:40

标签: python lua udp multicast

我正在尝试将一些代码从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代码正在达到超时。

1 个答案:

答案 0 :(得分:0)

Luasocket存储库提供了基于UDP的sendingreceiving消息的示例。示例中的代码与您的代码类似,并且正如Egor建议的那样使用receivefrom。虽然自从您使用setpeername后,receive也可以正常使用according to the documentation