2012-01-26 31 views
10

Tôi đang cố gắng tạo một trình khách socket đơn giản cho ví dụ Socket Server, từ trang Lua Socket.lua socket client

Phần máy chủ hoạt động mặc dù tôi đã thử bằng telnet.

Nhưng phần khách hàng không hoạt động.

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

Chỉ được kết nối với nó, gửi một số dữ liệu và nhận lại một số dữ liệu.

Ai đó có thể giúp tôi khắc phục sự cố không?

Trả lời

19

Máy chủ của bạn có thể nhận được trên mỗi dòng. Như đã lưu ý trong tài liệu receive, đây là mẫu nhận mặc định. Thử thêm một dòng mới vào thư khách hàng của bạn. Thao tác này hoàn tất việc nhận trên máy chủ:

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

Xin cảm ơn! Điều đó đã làm điều đó. :) – user1058431

+0

Cách khác, sử dụng mẫu 'nhận' khác, ví dụ: 'local threebytes = tcp: nhận (3)'. – Phrogz