使用Ruby套接字的TCP服务器可以工作,但不使用eventmachine
我用下面的代码编写了一个TCP服务器。这是通过GSM网络从远程GPS传感器接收GPS位置数据使用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 #
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