在套接字中打印到服务器屏幕

时间:2010-10-17 11:01:41

标签: ruby sockets

服务器进程是否有任何理由不在以下代码中提供任何输出?

require 'socket'

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

我通过以下方式连接:

nc localhost 3000

在windows cygwin环境中。

服务器终端中没有输出。我可以在某处冲洗一些东西吗?

1 个答案:

答案 0 :(得分:0)

您希望服务器通过“连接!”响应客户端,这是正确的吗?如果是这样,那么您的问题是#putsSTDOUT上调用时会将其输出重定向到Kernel。如果我们在客户端的#puts上调用TCPSocket,它会将输出写入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!