【发布时间】:2021-05-28 00:36:47
【问题描述】:
我是 Ruby 的新手,我正在尝试设置 TCPServer 和客户端,但我无法将数据从客户端获取到服务器,因为由于某种原因,当客户端连接时,连接在 while 循环内被冻结。 代码如下:
server.rb
require "socket"
server = TCPServer.new 1234
test = ""
loop do
session = server.accept
puts "Entering enter code herewhile loop."
while line = session.gets
puts "Inside while loop"
test << line
end
puts "Finished reading data"
puts "Data recieved - #{test}" # Read data from client
session.write "Time is #{Time.now}" # Send data to clent
session.close
end
client.rb
require "socket"
socket = TCPSocket.open("localhost", 1234)
socket.puts "Sending data.." # Send data to server
while(line = socket.gets)
puts line
end # Print sever response
socket.close
服务器打印一次“内部while循环”,然后由于某种原因它永远不会打印“完成读取数据”,直到我手动结束客户端连接,客户端结束连接后服务器打印一切正常。我怎样才能使这段代码工作?谢谢!
【问题讨论】:
-
gets的返回值始终为真,因此 while 循环将永远运行。
标签: ruby tcp connection tcpserver tcpsocket