0
我使用下面的代碼編寫了一個TCP服務器。這是通過GSM網絡從遠程GPS傳感器接收GPS位置數據。使用Ruby套接字的TCP服務器工作但不使用eventmachine
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寫了一個。代碼如下:
require 'eventmachine'
module EchoServer
def post_init
puts "-- someone connected to the echo server!"
end
def receive_data data
puts data
end
def unbind
puts "-- someone disconnected from the echo server!"
end
end
EventMachine::run {
EventMachine::start_server "127.0.0.1", 2000, EchoServer
}
但是,這個事件機器碼將不會接收也不會顯示數據。 Eventmachine代碼的任何部分都是錯誤的?
感謝
我測試你的代碼EventMachine的和它的工作對我蠻好 – 2012-02-28 10:14:09