LuaSocket (UDP) не получает дейтаграммы
Я экспериментирую с LuaSocket для проекта, над которым я работаю. Я выбрал UDP в качестве протокола.
В поисках документации и учебных пособий в Интернете я попытался создать пару клиент-сервер для тестирования и обучения.
Согласно тому, что я прочитал, следующий код должен работать. Тем не менее, только сервер, кажется, работает правильно. Клиент отправляет сообщение, но не получает ответ от сервера.
Спасибо за любую помощь, которую может оказать любой.
Сервер:
-- Server
#!/usr/bin/env lua5.1
local socket = require("socket")
udp = socket.udp()
udp:setsockname("*", 53474)
udp:settimeout(0)
while true do
data, ip, port = udp:receivefrom()
if data then
print("Received: ", data, ip, port)
udp:sendto(data, ip, port)
end
socket.sleep(0.01)
end
Клиент:
-- Client
#!/usr/bin/env lua5.1
local socket = require("socket")
udp = socket.udp()
udp:setpeername("127.0.0.1", 53474)
udp:settimeout(0)
udp:send("Data!")
data = udp:receive()
if data then
print("Received: ", data)
end
1 ответ
Решение
Заданное вами значение времени ожидания 0
, который вызывает тайм-аут клиента каждый раз.
Чтобы исправить это, дайте ему положительное значение тайм-аута:
udp:settimeout(1)
Или установите его nil
или отрицательное значение, поэтому оно блокируется на неопределенный срок:
udp:settimeout()
или же
udp:settimeout(-1)