0
我正在试验GNU netcat的-e
标志,它允许您将程序附加到TCP套接字,以便它可以使用STDIN/STDOUT发送和接收消息。我在编写一个简单的Ruby程序时遇到了一些麻烦,它会将其输入回送给客户端。以下是我现在有:在Ruby中接收来自STDIN的输入
#!/usr/bin/env ruby
while line = gets.chomp do
puts line
end
我可以与此命令的服务器上运行此程序:nc -l -p 1299 -e ./chat-client.rb
。但是,如果我连接到使用nc localhost 1299
我的服务器,我的通信过程如下:
输入:
I just don't know.
What is going wrong here?
输出后^ C-ING服务器:
/chat-client.rb:3:in `gets': Interrupt
from ./chat-client.rb:3:in `gets'
from ./chat-client.rb:3:in `<main>'
I just don't know.
What is going wrong here?
如果我^ C的客户端在服务器之前,根本没有输出。我究竟做错了什么?
_“一旦打印了不确定数量的数据,Ruby就只输出到标准输出。” - 严格地说,这是不正确的。 – mudasobwa
改编为精度/挑剔;) – cobaltsoda
我删除了我的答案,因为你的包含更好的解释。尽管考虑在'STDOUT'上使用'$ stdout',因为前者可能会轻松更改。 – mudasobwa