我正在創建一個連接到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