当前位置: 首页 > 知识库问答 >
问题:

EventMachine未在本地主机上接收TCP数据

钱毅
2023-03-14

使用eventmachine gem,我试图在本地主机上发送和接收数据。以下是我的客户端和服务器文件的代码。

服务器铷

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

客户铷

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

我在单独的控制台中执行服务器和客户端文件。以下是客户端的输出

客户端输出

Sending 
Connection Lost !

服务器输出

BCC Server
............>>>10

在服务器文件中,我已经打印了收到的数据,但它显示“..................

谢啦

共有1个答案

澹台聪
2023-03-14

如果您查看EM::Connection实现

https://github.com/eventmachine/eventmachine/blob/master/lib/em/connection.rb

def receive_data data
  puts "............>>>#{data.length}"
end

方法receive_data返回的正是您所经历的。这意味着调用的是原始方法,而不是您的方法。这意味着一件事。您试图覆盖的方法中有一个输入错误:)

在BCCServer你有

recieve_data(data)

而不是

receive_data(data)
 类似资料:
  • 在此之前,请注意,我在Stack Overflow和网络上的文章中发现了几个类似的问题,但这些都没有帮助我解决问题: PG 错误无法连接到服务器:连接被拒绝 服务器是否在端口 5432 上运行? PG::连接错误 - 无法连接到服务器:连接被拒绝 psql:无法连接到服务器:连接被拒绝 现在,问题是: < li >我有一个非常好用的Rails应用程序。 < li >与我的合作者一起,我们使用Git

  • 我在这个问题上花了几个小时,但没有任何成功。以下是我所做的: 在我的本地机器上安装了JProfiler(9.1.1)。 我的机器上安装了websphere 8.0.0。通过websphere控制台,我将VM参数设置为: -Xshareclasses:none-代理路径:C:\Program Files\jprofiler9\bin\windows\jprofilerti。dll=port=8849

  • 问题内容: 我正在尝试学习RMI编码,当我运行RMI的服务器端时,连接被拒绝。这是我服务器的主要方法 我相信实现代码无关紧要,因为它只是运行代码的已实现接口。我得到的例外是这个 我究竟做错了什么?客户端和服务器端都将在我的笔记本电脑上运行,因为这只是一个练习。我是否缺少代码或代码有问题?除了给我答案外,请解释为什么会这样,因为我不仅想让它起作用,而是在尝试学习。 **编辑我发现了为什么我的代码无法

  • SQLServerException:与主机本地主机端口1433的TCP/IP连接失败。错误:“连接被拒绝:连接。请验证连接属性。确保主机上运行SQL Server实例,并在端口接受TCP/IP连接。确保到端口的TCP连接没有被防火墙阻止。 请帮我解决这个问题。

  • 我有一个RMI服务器在本地主机上运行,导出类型的对象: 然后我想启动一个客户端并获取该对象的存根。似乎找到了注册表,但随后在块中抛出了: java.rmi.NotBoundexception:M在sun.rmi.registry.registryimpl.lookup(registryimpl.java:136)在sun.rmi.server.unicastserverref.olddispatc

  • 问题内容: 由于wamp服务器,我试图将我的android应用程序连接到本地主机url,但它不起作用。我的目标是获取json数据并解析这些数据。对于我的测试,我使用的是设备而不是模拟器,并且使用AndroidManifest.xml中的权限: 我的网址看起来像这样: 我试过了 : 但是到目前为止,它从未起作用: 然后我尝试了在互联网上找到的json url测试:http : //headers.j