服务器程序
local socket = require("socket")
local server = socket.try(socket.bind("*", 1234))
local ip, port = server:getsockname()
while 1 do
local client = server:accept()
client:settimeout(10)
local line, err = client:receive()
print (line)
print("Enter input:")
if not err then client:send(io.read().."\n") end
client:close()
end 客户端程序
local host, port = "*", 1234
local socket = require("socket")
local tcp = assert(socket.tcp())
tcp:connect(host, port);
tcp:send("Connection Established\n");
while 1 do
local s, status, partial = tcp:receive()
print(s or partial)
print("Enter input:")
tcp:send(io.read().."\n");
if status == "closed" then break end
end
tcp:close()服务器程序可以向客户端发送消息,但客户端不能向服务器发送消息。有没有办法……??
发布于 2017-02-10 06:31:07
我没有足够的名气来评论,但在10秒或服务器发送消息后,服务器关闭了连接。在服务器发送消息之前,客户端不会尝试发送消息,并且按照您编写代码的方式,服务器会在此时立即关闭连接。如果你想让两者进行通信,最好在循环之外接受客户端,如下所示:
服务器程序
local socket = require("socket")
local server = socket.try(socket.bind("*", 1234))
local ip, port = server:getsockname()
local client = server:accept()
client:settimeout(10)
while 1 do
local line, err = client:receive()
print (line)
print("Enter input:")
if not err then client:send(io.read().."\n") end
end
client:close()现在,这带来了一个问题,即服务器缺乏代码来实现客户端已断开连接,并需要找到新的客户端,但是实现起来应该不是那么困难。
https://stackoverflow.com/questions/42083665
复制相似问题