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)
Другие вопросы по тегам