在Ruby中,我如何只能从TCPSocket读取一行数据?
我正在使用下面的代码连接到我正在编写的网络服务(由EventMachine支持),在使用一个套接字连接执行多个命令时遇到了一些问题在Ruby中,我如何只能从TCPSocket读取一行数据?,ruby,sockets,eventmachine,Ruby,Sockets,Eventmachine,我正在使用下面的代码连接到我正在编写的网络服务(由EventMachine支持),在使用一个套接字连接执行多个命令时遇到了一些问题 #!/usr/bin/env ruby require 'socket' opts = { :address => "0.0.0.0", :port => 2478 } connection = TCPSocket.open opts[:address], opts[:port] # Get ID connection.print "ID
#!/usr/bin/env ruby
require 'socket'
opts = {
:address => "0.0.0.0",
:port => 2478
}
connection = TCPSocket.open opts[:address], opts[:port]
# Get ID
connection.print "ID something"
puts connection.read
# Status
connection.print "STATUS"
puts connection.read
# Close the connection
connection.close
下面是我的EventMachine服务器hander的外观
module ConnectionHandler
def receive_data data
send_data "Some output #{data}"
end
end
然而,我的第一个ruby脚本在执行连接时挂起。读取,因为我假定它正在等待连接关闭,这样它就知道它已经获得了所有数据?这不是我想要的
我的套接字服务器将只接收一条命令(在一行上)并返回一行输出
你知道我该怎么做吗?谢谢。如果服务器发送以\n字符结尾的响应,那么connection.get
方法将返回接收到的一行数据。因此,我刚刚在我的发送数据
呼叫的末尾添加了\n
,并切换到使用连接。获取,效果非常好 因此,您应该删除该答案并向上投票并接受另一个答案,因为put
还添加了换行符。这是公平的。