EventMachine 未在本地主机上接收 TCP 数据
EventMachine not receiving TCP data on localhost
使用 eventmachine gem 我正在尝试在本地主机上发送和接收数据。以下是我的客户端和服务器文件的代码。
server.rb
class BCCServer < EM::Connection
attr_accessor :server_socket
def post_init
puts "BCC Server"
end
def recieve_data(data)
puts "Received data: #{data}"
send_data "You sent: #{data}"
end
end
EM.run do
EM.start_server("0.0.0.0", 3000, BCCServer)
end
client.rb
class DCClient < EventMachine::Connection
def post_init
puts "Sending "
send_data "send data"
close_connection_after_writing
end
def receive_data(data)
puts "Received #{data.length} bytes"
end
def unbind
puts 'Connection Lost !'
end
end
EventMachine.run do
EventMachine::connect("127.0.0.1", 3000, DCClient)
end
我在单独的控制台中执行了服务器和客户端文件。以下是 client
的输出
客户端输出
Sending
Connection Lost !
服务器输出
BCC Server
............>>>10
在服务器文件中,我打印了接收到的数据,但显示的是“......>>>10”。我在哪里做错了?
谢谢
如果您查看 EM::Connection 实现
https://github.com/eventmachine/eventmachine/blob/master/lib/em/connection.rb
def receive_data data
puts "............>>>#{data.length}"
end
方法 receive_data returns 正是您所遇到的。
这意味着原始方法被调用而不是你的。这意味着一件事。您在尝试覆盖的方法中有拼写错误:)
在 BCCServer 中你有
recieve_data(data)
而不是
receive_data(data)
使用 eventmachine gem 我正在尝试在本地主机上发送和接收数据。以下是我的客户端和服务器文件的代码。
server.rb
class BCCServer < EM::Connection
attr_accessor :server_socket
def post_init
puts "BCC Server"
end
def recieve_data(data)
puts "Received data: #{data}"
send_data "You sent: #{data}"
end
end
EM.run do
EM.start_server("0.0.0.0", 3000, BCCServer)
end
client.rb
class DCClient < EventMachine::Connection
def post_init
puts "Sending "
send_data "send data"
close_connection_after_writing
end
def receive_data(data)
puts "Received #{data.length} bytes"
end
def unbind
puts 'Connection Lost !'
end
end
EventMachine.run do
EventMachine::connect("127.0.0.1", 3000, DCClient)
end
我在单独的控制台中执行了服务器和客户端文件。以下是 client
的输出客户端输出
Sending
Connection Lost !
服务器输出
BCC Server
............>>>10
在服务器文件中,我打印了接收到的数据,但显示的是“......>>>10”。我在哪里做错了?
谢谢
如果您查看 EM::Connection 实现
https://github.com/eventmachine/eventmachine/blob/master/lib/em/connection.rb
def receive_data data
puts "............>>>#{data.length}"
end
方法 receive_data returns 正是您所遇到的。 这意味着原始方法被调用而不是你的。这意味着一件事。您在尝试覆盖的方法中有拼写错误:)
在 BCCServer 中你有
recieve_data(data)
而不是
receive_data(data)