2010-10-17 31 views
1

是否有任何理由說服務器進程在以下代碼中不提供任何輸出?在Windows Cygwin環境在套接字中打印到服務器屏幕

nc localhost 3000 

require 'socket' 

server = TCPServer.open(3000) 
loop{ 
    puts "waiting for connection" 
    client = server.accept 
    puts "connection!" 
    client.close 
    puts "client closed" 
} 

我通過連接。

在服務器終端中不顯示任何輸出。我應該在什麼地方刷些東西?

+0

解決了,看到Sirupsens答案評論。 – ddccffvv 2010-10-18 10:15:28

回答

0

您希望服務器以「連接!」響應客戶端,是對的嗎?如果是這樣,您的問題是#putsKernel上調用時將其輸出重定向到STDOUT。如果我們對客戶的TCPSocket稱之爲#puts,它會寫輸出到TCPSocket IO:

require 'socket' 

server = TCPServer.open(3000) 
loop{ 
    puts "waiting for connection" 
    client = server.accept 
    client.puts "connection!" 
    client.close 
    puts "client closed" 
} 

然後客戶端是這樣的:

$ nc localhost 3000 
connection! 
+0

不,我接受所有輸出到服務器終端。它看起來像是在我打斷服務器進程之前,cygwin沒有打印到終端。在本地windows終端中運行可以獲得所需的輸出。但感謝您的答案。 – ddccffvv 2010-10-18 10:12:02