2012-01-26 15 views
10

Próbuję zrobić prosty klient gniazda Lua dla przykładu z serwera Socket, ze strony Lua Socket.Klient gniazda Lua

Część serwerowa działa, próbowałem z telnetem.

Ale część klienta nie działa.

local host, port = "127.0.0.1", 100 
local socket = require("socket") 
local tcp = assert(socket.tcp()) 

tcp:connect(host, port); 
tcp:send("hello world"); 

Przypuszcza się jedynie do podłączenia do niego wysłać jakieś dane i odbierać niektóre w zamian.

Czy ktoś może mi pomóc to naprawić?

Odpowiedz

19

Twój serwer prawdopodobnie odbiera w linii. Jak odnotowano w dokumentach receive, jest to domyślny wzorzec odbioru. Spróbuj dodać znak nowej linii do wiadomości klienta. Kończy to otrzymanie na serwerze:

local host, port = "127.0.0.1", 100 
local socket = require("socket") 
local tcp = assert(socket.tcp()) 

tcp:connect(host, port); 
--note the newline below 
tcp:send("hello world\n"); 

while true do 
    local s, status, partial = tcp:receive() 
    print(s or partial) 
    if status == "closed" then break end 
end 
tcp:close() 
+1

Wow thanks. Tak było. :) – user1058431

+0

Można również użyć innego wzorca 'receive', np. 'local threebytes = tcp: receive (3)'. – Phrogz