2015-12-09 6 views
1

Я пытаюсь преобразовать некоторый код из python в lua.Lua и multicast

Соответствующий бит питона:

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 предсказуемо тонкий, оставляя сухари на пути к просветлению ... –

ответ

0

В репозитории Luasocket приведены примеры для sending и receiving сообщений по UDP. Код в примере похож на ваш, и он использует receivefrom, как предложил Егор. Хотя, поскольку вы используете setpeername, receive должен работать также according to the documentation.

 Смежные вопросы

  • Нет связанных вопросов^_^