Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ruby套接字的TCP服务器可以工作,但不使用eventmachine_Ruby_Eventmachine - Fatal编程技术网

使用Ruby套接字的TCP服务器可以工作,但不使用eventmachine

使用Ruby套接字的TCP服务器可以工作,但不使用eventmachine,ruby,eventmachine,Ruby,Eventmachine,我用下面的代码编写了一个TCP服务器。这是通过GSM网络从远程GPS传感器接收GPS位置数据 require 'socket' server = TCPServer.open(2000) # Listen on port 2000 sockets = [server] # An array of sockets we'll monitor log = STDOUT #

我用下面的代码编写了一个TCP服务器。这是通过GSM网络从远程GPS传感器接收GPS位置数据

require 'socket'

server = TCPServer.open(2000) # Listen on port 2000
sockets = [server]                              # An array of sockets we'll monitor
log = STDOUT                                    # Send log messages to standard out
   while true
ready = select(sockets)
readable = ready[0]

readable.each do |socket|
  if socket == server
    client = server.accept
    sockets << client
       log.puts "Accepted connection from #{client.peeraddr[2]}"
       while msg = client.gets
       puts msg
  end
else
  input = socket.gets

    if !input
      log.puts "Client on #{socket.peeraddr[2]} disconnected"
      sockets.delete(socket)
      socket.close
      next
    end

    input.chop!
    if (input == "quit")
      socket.puts("Bye");
      log.puts "Closing connnection to #{socket.peeraddr[2]}"
      sockets.delete(socket)
      socket.close
    else
      socket.puts(input.reverse)
    end
   end
  end
 end
但是,此eventmachine代码不会接收或显示数据。Eventmachine代码的任何部分出错


谢谢

我认为您的问题在于您只在本地主机上收听,请尝试以下方法:

EM::run do
   EM.start_server "0.0.0.0", 2000, EchoServer
end

我测试了你的Eventmachine代码,它对我来说很好
EM::run do
   EM.start_server "0.0.0.0", 2000, EchoServer
end