路由器后面的android套接字编程

2023-11-24

我有疑问或问题。我正在尝试在两部 Android 手机之间建立 p2p 连接。我将每部电话连接到我的服务器,并获取它们的私有 (192.168.1.1) 和公共 (76.123.288.22) IP 以及它们连接到我的服务器的端口。当电话连接到服务器以打开具有特定端口的服务器套接字时,我发送响应。我还向另一部电话发送了开放套接字的公共 IP 和端口,但它无法连接。我在这里阅读了多个线程,如果电话或计算机位于两个不同的路由器后面,则不可能进行 p2p 连接。我的问题是这是否属实,如果属实,LogMeIn 或其他 p2p 应用程序如何在不同路由器后面工作?是编程错误还是网络架构不允许?


有几种技术可以实现这一目标 -STUN, TURN, ICE仅举几例。您可以阅读其中的每一个内容,以及使用这些技术的软件,例如 Skype、gtalk(现在为 2018 年 3 月的 google talk)等。

但这里要理解的主要概念是,

  1. 你需要一个ip可公开访问,以便您可以连接到它。如果它位于专用网络上的路由器后面,那么您需要路由器上的端口转发即,您需要向该路由器添加一条规则,以将特定端口上收到的流量转发到路由器后面的服务器。在某种程度上,上述技术隐式地或通过涉及外部第三方服务器来实现这一点。

  2. 你需要允许传入连接在首先连接的机器上。通常,Windows 或 Linux 防火墙会阻止所有传入连接,除非添加例外。您的两个节点可能都需要这样做。

对于最后一部分,我不在android上编程,所以我不太确定它是否允许添加传入连接的规则等。但我确实知道gtalk有一个android客户端,并且gtalk使用XMPP,它内部可以使用任何技术我在上面指出了。所以没有理由相信为什么它不能在 Android 手机上完成。

添加一些更有用的参考:

libjingle(2018 年 3 月更新了链接)是 google 的一个开源库,可用于编写包括文本、音频和视频在内的 p2p 应用程序。

好像也是为android编译的here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路由器后面的android套接字编程 的相关文章

  • 属性文件中的字符串主机名:Java

    这听起来可能是一个非常简单的问题 但我无法找到解决方法 我有一个 config properties 文件 其中包含两个键值 IP 地址和端口号 我读取此配置文件以提取字符串格式的键值 但是 当我尝试使用这些值时 我无法连接到从配置文件中检
  • 如何让android BottomAppBar圆角化

    我正在使用BottomAppBar来自谷歌这样的
  • 为什么java(>=7版本)不支持运行没有main方法的程序? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 class WithoutMain static System out println Without main class Sy
  • 如何在具有多种字体大小的 TextView 中调整行高?

    我有一个包含 Spannable 字符串的 TextView 该字符串包含一堆文本 其中第一个单词的字体大小是字符串其余部分的两倍 问题在于 由于第一个字的大小增加 第一行和第二行之间的行间距比后续行之间的行间距大得多 http img s
  • 将 XML 从网站解析到 Android 设备

    我正在启动一个 Android 应用程序 它将解析来自网络的 XML 我创建了一些 Android 应用程序 但它们从未涉及解析 XML 我想知道是否有人对最佳方法有任何建议 这是一个例子 try URL url new URL your
  • Java 泛型:将 Object o 的类与 进行比较

    假设我有以下课程 public class Test
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • 在 Android KitKat 中接收彩信

    所以这个视频Android 4 4 短信 API http www youtube com watch v mdq0R2WQssQ DevBytes 解释了 KitKat 中 SMS API 的最新变化 他们还提供了示例项目的链接 http
  • 使用 InputStream 通过 TCP 套接字接收多个图像

    每次我从相机捕获图像时 我试图将多个图像自动从我的 Android 手机一张一张地发送到服务器 PC 问题是read 函数仅在第一次时阻塞 因此 从技术上讲 只有一张图像被接收并完美显示 但在那之后当is read 回报 1 该功能不阻塞
  • Eclipse 在单独的窗口中打开代码

    我正在 eclipse 中编程 在两个显示器设置上运行 在其中一台显示器上 我只获得了项目资源管理器和编辑器作为自定义透视图 而在另一台显示器上 我获得了其他工具 例如控制台 调试 任务 变量 断点等 例如 当我单击任务视图中的任务时 这将
  • 找出该月第一个星期日/星期一等的日期

    我想在java中检测每个月第一周 第二周的第一个星期日 星期一的日期 我怎样才能实现它 我已经检查了 java 中的 Calendar 类和 Date 类 但无法找到解决方案 所以请帮助我解决这个问题 Calendar calendar C
  • Java“非法访问操作”方法将被弃用? [复制]

    这个问题在这里已经有答案了 JDK 9 JVM 发出非法访问操作警告后 如果您使用一些非法访问 例如setAccessible 我的问题 Is setAccessible 以后会被封吗 此功能的官方参考 如果将被弃用 在哪里 我在任何地方都
  • Spring Boot中服务接口类的用途

    我的问题是关于接口类的使用 我对 Spring 还很陌生 所以如果这过于简单 请耐心等待 首先 当您可以在 BoxService 中声明 find all 时 这里拥有 IBoxService 接口有什么意义 其次 在控制器中如何使用IBo
  • 如何将 SD 卡图像添加到 coverflow?

    Here is my coverflow with drawables This is my Image Adapter Code The Constant IMAGE RESOURCE IDS private static final L
  • Android:适合SystemWindows和换行符干扰bottomSheets

    我发现如果父布局包含android fitsSystemWindows true 当发生与视图相关的操作时 它会干扰我的 BottomSheets 定位 具体来说 我遇到的是 文本视图中的换行符将触发底页偏移系统 通知栏的高度 换行符 fi
  • Android Studio-公司域名

    在Android Studio中 当您创建新项目时 系统会提示您输入域名 我已经知道您可以制作一个 但是如果您想在 Google Play 商店上分发您的应用程序怎么办 即使我永远不会使用我的域 我是否需要购买一个网络域来分发我的应用程序
  • 如何从 jenkins 的现有项目生成 .hpi 插件

    我正在尝试使用 jenkins 的性能插件 但最新版本存在一些问题 如链接中所述 https issues jenkins ci org browse JENKINS 27100 https issues jenkins ci org br
  • 无法使用 Alarmmanager 定期在后台进行工作

    我想按小时在后台调用一项服务 第一个问题是警报管理器工作不顺利 计时器很糟糕 有时早有时晚 第二个问题是 RemoteServiceException Context startForegroundService 然后没有调用 Servic
  • 删除Java中重载的方法

    有2个重载方法 这些方法中的每一个都将一种类型的列表转换为不同类型的列表 但第一种方法使用比较器 class SomeClass public static
  • 在 Android 中将列表传递给另一个 Activity

    我已经创建了一个列表 并希望将该列表传递给另一个活动 但当我创建意图时 我在 putExtra 语句上收到错误 只是想知道是否有任何简单的方法来传递字符串列表而不是单个字符串 Thanks private List

随机推荐

  • 如何初始化 wchar_t 变量?

    我正在看书 C 简而言之 并在阅读完本节后字符集 谈到宽字符 我写了这个程序 include
  • 使用 AJAX 刷新的页面上的 Google 加一按钮

    有谁知道 Google 加一按钮的一些代码可以在使用 AJAX 刷新的页面上运行吗 Facebook 的操作非常简单 但我在 Google 上找不到任何相关文档 Thanks 我也在寻找这个并找到了这个
  • Bitbucket:显示标记为秘密的变量的值

    对于我的一个存储库 我需要查看我为部署的安全属性设置的值 按中所述创建https support atlassian com bitbucket cloud docs variables and secrets Secured variab
  • .Net Core 依赖注入 IdbConnection

    我有一个 NET MVC 应用程序 它使用 autofac 进行依赖注入 当应用程序启动时 以下代码注册 IDbConnection var connectionString ConfigurationManager ConnectionS
  • 在真实设备上通过 USB 连接 localhost api 与 Android Studio 时出现超时错误

    我在 Window 8 1 上使用 Android Studio 版本 3 安装了 XAMPP 以在本地主机上托管 php api 我正在尝试从 Android Studio 访问 localhost api 在主机名中 我使用了 IPv4
  • Docker 运行失败,守护程序发出错误响应

    我只需运行以下命令 docker run d p 80 80 name webserver nginx 拉取所有图像后返回此错误 docker 来自守护程序的错误响应 驱动程序外部编程失败 端点网络服务器上的连接 ac5719bc0e95e
  • 如何在 SwiftUI 中的 foreach 循环中设置切换状态

    当我尝试在字典的值循环内设置显示切换时 我从错误消息中得到的帮助很少 如果我取消注释下面的 3 行注释代码 并尝试为循环中的每个属性添加切换 则会收到以下错误 无法将类型 HStack Text ConditionalContent gt
  • 部署期间 Azure 中的 Service Fabric 错误

    将集群部署到 Azure 时遇到问题 一切都在本地运行 但是当部署到 Azure 时 我在尝试调用其中一项服务时收到错误 在 Azure 中 服务结构是6 1 480 9494 并且无法升级 但我的本地版本是6 2 262 94946天前发
  • 如何去掉小数点后的零

    我正在尝试在小数点后修剪零 如下所示 但它没有给出所需的结果 trig currentVal doubleValue trig trig 100 NSNumberFormatter formatter NSNumberFormatter a
  • 使用多个 CTE

    无法弄清楚如何使用多个 CTE 这失败了 with cteOne as select 1 as col cteTwo as select 2 as col select yesA where exists select from cteOn
  • 将数据从 Textbox 插入到 Postgresql

    我刚刚学习如何连接 C 和 PostgresQL 我想将 tb1 Textbox 和 tb2 中的数据插入数据库 但我不知道如何编码 我以前的代码是从数据库中选择 这是我的代码 private void button1 Click obje
  • 如何取消 URL 会话请求

    我使用将图像转换为 base64 并将图像作为参数发送到 API 中 将多个图像上传到服务器 但是 当我们一次又一次调用 api 时 如何停止单击按钮时的 api 调用 我正在使用下面的代码来调用 API 提前致谢 let urlPath
  • Windows 上的 QtCreator 使用 CodeSourcery 工具链为 Linux ARM 进行交叉编译

    我在 Windows 7 计算机上安装了 Qt Creator 我的目标是 OMAP3 嵌入式 Linux 板 我下载了目标工具链 Sourcery G Lite for Windows 并安装了 MinGW http www mingw
  • 如何将 npm 与 node.exe 一起使用?

    我已经从 Windows 下载了 Nodejs 的二进制文件 exe 主页 我该如何安装和使用npm 节点包管理器 当前的 Windows 安装程序来自节点js org从 v0 6 11 2012 02 20 开始 NPM 将与 NodeJ
  • C 中混合使用“switch”和“while”

    我最近读过这一页关于奇怪的 C 片段代码 其中大多数是可以理解的 但我无法理解这一点 switch c 3 while c 4 gt 0 foo case 3 foo case 2 foo case 1 foo case 0 谁能帮我看看这
  • 如何在 Oracle 10gR2 和 JPA 中做到不区分大小写和不区分重音?

    在 J2EE 项目中 使用 JPA 如何强制类似查询不区分大小写和重音 我知道更改会话变量 NLS COMP 和 NLS SORT 但我想知道是否还有另一个技巧可以在查询本身中执行此操作 而不更改会话变量 使用 JPA 如何强制类似查询不区
  • 无法对基本类型 double 调用compareTo(double)

    线路return array index1 compareTo array index2 提供了一个错误 无法对基本类型 double 调用compareTo double 如何解决这个问题 This function implements
  • 如何判断DLL是COM还是.NET?

    我有一个更新程序 从服务器提取的文件在一个目录中混合了 vb6 dll 和 net DLL 如何判断一个dll是否是COM dll 所以我可以调用regsvr32从更新程序到它 我想一种方法是尝试使用以下命令加载文件System Refle
  • KornShell 中的正则表达式

    我试图检查一个变量是否恰好是两个数字 但我似乎无法弄清楚 如何在 KornShell ksh 中检查正则表达式 regex 我努力了 if month 0 9 2 if month 0 9 2 我无法找到任何有关它的文档 有什么见解吗 ca
  • 路由器后面的android套接字编程

    我有疑问或问题 我正在尝试在两部 Android 手机之间建立 p2p 连接 我将每部电话连接到我的服务器 并获取它们的私有 192 168 1 1 和公共 76 123 288 22 IP 以及它们连接到我的服务器的端口 当电话连接到服务