我正在创建一个连接到TCP客户端的ruby服务器。我的服务器正在使用一个TCPServer,我试图使用TCPServer :: recv(),但它不会等待数据,所以只是在紧密的循环中继续,直到收到数据。什么是从TCPServer读取最有效的方式?
什么是处理间歇数据的最有效方法?我无法更改正在发送的数据,因为我试图模拟另一台服务器。从TCPServer/TCPSocket那里读取的语句会等待数据发送?
require "socket"
dts = TCPServer.new('localhost', 20000)
s = dts.accept
print(s, " is accepted\n")
loopCount = 0;
loop do
Thread.start(s) do
loopCount = loopCount + 1
lineRcvd = s.recv(1024)
if (!lineRcvd.empty?)
puts("#{loopCount} Received: #{lineRcvd}")
s.write(Time.now)
end
end
end
s.close
print(s, " is gone\n")
感谢您的时间。
我会检查选项以确保我设置为阻止。我知道的连接没有关闭,因为我在收到一些空的lineRcvd字符串后得到了一些响应。 – Superpolock 2009-09-22 18:32:52
所以这实际上是正确的答案? – Jim 2010-03-11 10:13:12