2012-01-26 17 views
10

Sto provando a creare un semplice client socket lua per l'esempio Socket Server, dalla pagina Lua Socket.client socket lua

La parte server funziona però, l'ho provato con telnet.

Ma la parte client non funziona.

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"); 

È solo per connettersi ad esso, inviare alcuni dati e ricevere alcuni in cambio.

Qualcuno può aiutarmi a risolverlo?

risposta

19

È probabile che il server riceva per linea. Come indicato nei documenti receive, questo è il modello di ricezione predefinito. Prova ad aggiungere una nuova riga al messaggio del tuo cliente. Questo completa la ricezione sul server:

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, grazie. Questo è stato. :) – user1058431

+0

In alternativa, utilizzare un diverso schema di ricezione, ad es. 'threebytes locale = tcp: receive (3)'. – Phrogz