如何通过公共IP发送数据?

问题描述 投票:1回答:2

我目前正在使用Android应用,该应用需要将数据从一个设备传输到另一台设备。我想实现没有任何服务器的数据传输。我可以自己进行握手以交换动态IP(会话发起),但是现在我已经苦苦挣扎了数周,如何在知道其公共IP和私有IP的情况下如何将数据发送到另一台设备。

目前,我的应用程序仅可以通过TCP套接字将数据发送到同一WiFi内的设备(因此仅使用私有IP)。但是一旦我尝试发送到公共IP,它们就会迷路。他们可能无法通过路由器的防火墙。手动关闭防火墙是没有选择的。所以我想TCP是错误的协议。我想到的是类似[[“ IP语音”的东西,但是可以发送任何二进制数据而不是仅仅发送视频和音频。

我的想法是:

  1. 类似于

    Magic-Wormhole

,因为它在PC上像超级按钮一样工作,但是很遗憾,我找不到在Android中使用它的任何方法
  • RTP

  • (用于IP语音的协议)>]
  • “ UDP

    打孔

  • ”以处理NAT。
    其中一个可能是解决方案。问题是我不知道如何在

    Java / Android

    中实现这些东西((我在GitHub上的Project

    我目前正在开发一个Android应用,该应用需要将数据从一台设备传输到另一台设备。我想在没有任何服务器的情况下实现数据传输。我可以处理握手交换...

    java android tcp rtp hole-punching
    2个回答
    1
    投票
    目前,互联网真的很复杂,基本上您无法通过将数据发送到其公用IP来访问另一台设备,因为大多数PC或移动设备都位于NAT之后。

    1
    投票
    您可以检出Google STUN服务器以将RTP / UDP数据包传输到网络。
    © www.soinside.com 2019 - 2024. All rights reserved.