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