2015-01-23 1 views
2

저는 현재 진행중인 프로젝트에서 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 
+0

클라이언트에서 시간 초과를 제거하거나 늘리십시오. 그것은 나를 위해 작동합니다. – moteus

답변

5

사용자가 설정 한 시간 초과 값은 클라이언트 제한 시간마다 발생 0이다. 이 문제를 해결하려면

, 그것을 긍정적 인 타임 아웃 값 제공 :

udp:settimeout(1) 

또는 nil 또는 음수 값으로 설정 무한정 차단 :

udp:settimeout() 

또는

udp:settimeout(-1) 
+0

감사! 그런 명백한 해결책, 그러나 나가 완전히 간과 한 무언가! – account3r2

관련 문제