小编Sal*_*ain的帖子

Android 应用程序接受本地但不接受远程 TCP 连接

非常坚持这一点,所以我感谢您提供的任何帮助!

我有两个程序,一个Android 应用程序和一个多套接字Java 服务器。Android 应用程序首先建立到服务器(端口 21)的出站连接,然后接受来自服务器(端口 1025)的入站连接。为了保持一致性,我将始终将 Android 应用程序称为客户端,将 Java 应用程序称为主机,无论建立连接的方向如何。

这些程序在本地网络上完美运行,无论是我的 Android 手机连接到我的本地服务器 IP 192.168.1.103,还是托管服务器的 PC 上的模拟器连接到10.0.2.2.

但是,当我移出本地 Intranet 时,我仍然可以在端口 21 上建立 android-> 服务器连接,但尝试从服务器连接到端口 1025 上的手机时超时。

我正在考虑的事情清单:

  1. Android 模拟器已重定向端口 1025
  2. Windows(Win 7服务器主机)防火墙被禁用,其他已知防火墙被禁用
  3. 传入连接侦听器不在主线程上(SDK 2.1,所以应该不重要)
  4. 路由器端口21和1025正在转发

测试列表及其结果:

  1. 从本地网络上的模拟器/Android 手机/远程网络上的 Android 手机连接到服务器的公共 IP(存在路由器) -无法建立服务器->电话连接
  2. 删除路由器并从模拟器或远程 Android 手机连接 -无法建立服务器->手机连接
  3. 从模拟器连接到10.0.2.2路由器是否存在 -成功
  4. 从本地网络上的 Android 手机连接到192.168.1.103-成功

最后是一些代码,服务器的输出连接尝试(连接是在构造函数中创建的,因为在服务器收到入站连接时已经创建了该客户端的子线程)

OutputSocketServer(InetAddress inetAddress, int port, int count …
Run Code Online (Sandbox Code Playgroud)

java sockets android network-programming tcp

5
推荐指数
1
解决办法
4326
查看次数

标签 统计

android ×1

java ×1

network-programming ×1

sockets ×1

tcp ×1