У меня есть программа, которая показывает пользователю две кнопки: хост-сервер и присоединиться к серверу. Когда нажата кнопка хост-сервера, вызывается эта функция:
local ip, port = socket.dns.toip("localhost"), 11111 --is the problem with this port?
local udp = socket.udp()
udp:settimeout(0)
udp:setsockname(ip, port)
if not udp:getsockname() then
udp:setpeername(ip, port)
udp:send("join")
connected = true
end
Когда нажата кнопка присоединения, вызывается эта функция:
local udp = socket.udp()
udp:settimeout(0)
if not connected then
repeat
local data, ip, port = udp:receivefrom()
if data == "join" then
udp:setpeername(ip, port)
connected = true
--create 'connected' text
break
end
until not data
if not connected then
--create 'not connected' text
end
end
идея состоит в том, что хост Кнопка отправляет «присоединиться», а кнопка присоединения получает все данные в udp, и если она находит «присоединиться», она подключается к нему. Я новичок в UDP, я действительно не знаю, в чем проблема. Я знаю, что способ, которым я это делаю, немного странный, но это просто практика, позже я сделаю более удобную для пользователя.
(Я помещаю эту программу на два ПК, нажимая на хост один затем присоединяется к другому. Я получаю текст "не подключен".)