繁体   English   中英

Ruby TCPSocket通信

[英]Ruby TCPSocket communication

我正在学习TCPSocket并编写了一个简单的服务器:

require 'socket'

server = TCPServer.open(2000)

loop {
  client = server.accept
  p client.gets
  client.print("bar")
  client.close
}

和简单的客户写道:

require 'socket'

hostname = 'localhost'
port = 2000
socket = TCPSocket.open(hostname, port)

socket.print("foo")
p socket.gets

当我在单独的终端中运行这些程序时,服务器或客户端以一种方式进行通信(即,一个“打印”而另一个“获取”),则在另一端得到了预期的字符串。 当我以书面形式运行它们时,客户端首先“打印”-向服务器发送一条消息,然后服务器“获取”它然后再“打印”字符串给客户端,它只是挂了。 是什么导致此问题?

您的程序执行以下操作:

在客户端和服务器之间建立连接。

客户端

  • 调用print(“ foo”)-恰好3个字节传输到服务器。
  • 呼叫获取-等待来自服务器的数据,但服务器从不发送任何数据。

服务器端

  • 调用gets-ruby函数获取解析流数据,并且始终返回整行。 但是服务器仅收到“ foo”,并且服务器不知道它是否是整行。 因此,它将永远等待客户端从未发送过的换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM