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

UDP打孔:无法从服务器发送到客户端

党源
2023-03-14

从server-A(可通过静态IP全局访问)开始,我将UDPhtml" target="_blank">套接字绑定到0.0.0.0:25000。

然后,在(住宅)NAT 后面使用客户端 A,我将 UDP 套接字绑定到 0.0.0.0:25000。然后,客户端 A 将数据包发送到服务器 A。

服务器 A 接收数据包。服务器 A 记录远程套接字 K,数据包从中 NAT 开始。服务器 A 向 K 发送数据包,目的是 NAT 将数据包转发到客户端 A。

然而,客户端A不接收该分组。在NAT上,当我为UDP启用端口25000上的端口触发时,它就会工作。然而,在制作p2p应用程序时,我更希望避免要求客户端进入路由器设置以使程序工作。如何在防火墙上打一个洞,使通信双向?

共有1个答案

吕征
2023-03-14

如果您的路由器/ NAT设备支持NAT-PMP或UPNP,那么这真的很容易。您只需要实现协议并打开特定端口即可使用。如果没有,那么您可能需要使用 ICE。

 类似资料:
  • 我正在寻找一些关于如何实现一个能够将音频发送到服务器的Java客户端的链接/源代码/教程(见下文)。它将能够发送一个音频文件,然后由服务器接收并通过计算机扬声器播放。 我还想问,对于这种情况,使用UDP或TCP服务器会更好吗?因为我将开发一个android应用程序,它可以录制声音,然后通过电脑扬声器将声音发送到服务器进行实时播放。

  • 我目前正在尝试为我的udp服务器在Android上实现udp打孔。事情应该是这样的: 客户端(在NAT之后;可能是3G,..)向服务器发送DatagramPacket(服务器有一个公共IP;端口也是45555)。客户端重复发送具有给定延迟的数据报 一旦服务器接收到数据报,它每500ms发送一次数据报(“信号”)。 如果穿孔成功,客户端应接收到这些信号 下面是我当前的客户端实现(Android):

  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 我正在试用netty,但当我响应时,客户端似乎没有收到我的消息。我使用Java NIO和socketChannel编写了相同的代码,看起来很好。我这样说是因为客户机会记录我发送的任何内容。下面是我的服务器 下面是我的服务器处理程序 } 示例响应: 我正在我的盒子上做一个tcpdump,我看到了我在电线上发送的内容,所以我不确定我做错了什么。而且,几分钟后,这会被记录下来,我不确定我在服务器或服务器

  • 我正在Unity中制作一个游戏,我试图将数据从客户端发送到服务器并返回到客户端(试图保存实例),但当我收到数据并尝试将数据发送回客户端时,它表示udp客户端未连接。 它成功地将数据从我的Unity客户端发送到服务器,但一旦它到达那里,套接字就会断开连接,我就无法返回任何内容。正如你所看到的,我试图设置一些多播选项,但它似乎不能正常工作。 客户: 服务器: 因此,服务器中UdpClient的实例会保

  • 我正在开发一个通讯系统: A、B是NAT下的计算机,A是服务器B是客户端S是STUN服务器 %S正在Internet上可访问的计算机上运行 麻烦就从这里开始,STUN服务器完成了它的工作,因为两端都接收到关于另一端的正确信息。 但是我从来没有接收到另一端的消息,所以两端都在监听,没有接收到握手操作码或其他任何东西。 我检查了NAT的行为,似乎它是这样的 我运行的测试看到两端(A,B)托管在同一台机