Android - 无法使用套接字通过移动3G / 4G网络连接到外部IP地址

时间:2013-08-17 20:01:50

标签: java android sockets port 4g

现在,我正在编写一个服务器/客户端程序,允许用户动态地从Android手机控制他们计算机的不同部分。服务器在计算机上运行,​​客户端从Android手机运行。我正在使用套接字编程来执行此操作,计算机上的WinSocket和手机上的Android / Java套接字。

什么有效:

  1. 计算机端的服务器正常工作。
  2. 当在同一个wifi网络上时,手机上的客户端可以发送和 从服务器接收命令。
  3. 可以从连接到的本地无线网络外部访问服务器。一世 通过使用此open port checking tool发送请求对此进行了测试 到服务器。服务器可以成功接收请求,并且 端口检查网站报告我正在使用的端口是 正确转发。
  4. 在我的Android手机上使用测试开放端口的应用时,我的 服务器通过3G / 4G获取连接请求。
  5. 现在我的问题。当我尝试从手机上的客户端连接到计算机上运行的服务器时,当手机通过3G或4G 连接到互联网时,套接字什么都不做,并抛出套接字超时异常,并且服务器未从手机接收任何连接请求。我不明白这一点,因为像上面的第四件事一样,我使用的端口检查应用程序可以通过我的服务器程序,但我在下面发布的代码在3G / 4G上运行时没有做任何事情。

    String hostName = "SERVER_NETWORK_EXTERNAL_IP_HERE";
    int port = 58587;
    SocketAddress address = new java.net.InetSocketAddress(hostName, port);
    sock = new Socket();
    sock.connect(address, 5000);
    

    运行此代码时,屏幕顶部状态栏中的网络活动指示器不会报告出站网络活动,但如果我连接到wifi,则一切正常。有人有任何想法吗?

0 个答案:

没有答案