【问题标题】:How To Display Characters Received Via A Socket?如何显示通过套接字接收的字符?
【发布时间】:2010-09-30 09:25:47
【问题描述】:

我有一个非常简单的 Ruby 程序,它充当“回显服务器”。当您通过 telnet 连接到它时,您输入的任何文本都会被回显。那部分正在工作。如果我添加一个“putc”语句以在运行程序的控制台上打印每个接收到的字符,则只打印显示的第一个字符。之后,它继续向 telnet 客户端回显内容,但控制台上没有打印任何内容。

以下是一个显示该问题的小型精简程序。

我是非常 Ruby 新手,可能犯了一个典型的菜鸟错误。我做错了什么?

require 'socket'  

puts "Simple Echo Server V1.0"  
server = TCPServer.new('127.0.0.1', '2150')  
cbuf = ""  

while socket = server.accept  
    cbuf = socket.readchar  
    socket.putc cbuf  
    putc cbuf  
end  

【问题讨论】:

    标签: ruby sockets echo-server


    【解决方案1】:

    问题在于,每次有人连接时,您的代码只会运行一次 while 循环(TCPServer#accept 接受连接)。尝试更多类似的东西:

    require 'socket'  
    
    puts "Simple Echo Server V1.0"  
    server = TCPServer.new('127.0.0.1', '2150')
    
    socket = server.accept  
    
    while line = socket.readline
      socket.puts line
      puts line
    end
    

    【讨论】:

    • 谢谢。知道这很明显是我忽略的。
    猜你喜欢
    • 2017-10-14
    • 1970-01-01
    • 2012-01-16
    • 2022-01-18
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多