Android Java Socket - 连接超时

问题描述:

我试图创建一个简单的应用程序。我想我的手机是一个服务器套接字,我试图从我的电脑发送消息,我的电脑是客户端是这种情况。Android Java Socket - 连接超时

当他们在同一个网络中工作正常,但是当我在3G网络中连接手机时,我的PC中收到错误“连接超时”。

我使用的是无ip的主机(在这两种情况下)。当我做'telnet mycellphonehost.org 8080'例如我没有问题,它能够连接。我认为no-ip主机工作正常,因为是给我正确的外部IP。

我还使用一个称为FIREBIND的应用程序来测试端口是否打开。其结果是:“Firebind已成功地通过此端口使用TCP协议传输和接收数据。”

我已经阅读了很多关于这个问题的问题,类似的问题......但没有什么能帮助我解决这个问题。我希望有一个人可以帮助我。提前致谢!

按照代码:

  • Android的服务器

    try{ 
         ServerSocket server = new ServerSocket(port); 
         Socket s = server.accept(); 
         BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream())); 
         System.out.println(input.readLine()); 
         input.close(); 
         s.close(); 
         server.close(); 
    } 
    catch(IOException e){ 
         System.out.println("ERROR: " + e.getMessage()); 
    } 
    
  • PC客户端

    try{ 
         Socket s = new Socket("myhostfromno-ip.org",port); 
         PrintStream output = new PrintStream(s.getOutputStream()); 
         output.println("TEST MESSAGE"); 
         output.flush(); 
         s.close(); 
    } 
    catch(IOException e){ 
         System.out.println("ERROR: " + e.getMessage()); 
    } 
    
  • PS:他们是不同的网络中

+0

你几乎可以肯定来自外界的防火墙关闭的3G-很少,如果任何运营商允许进入的TCP连接。 –

+0

Gabe Sechan你有任何解决防火墙问题的建议吗?或者任何检查是否真的是防火墙? – Isabela

+0

暂时把它们都放在同一个wifi网络上,看代码是否正常工作。如果可行,问题在于网络,很可能是防火墙。如果没有,那么你有一个我错过的代码问题。它需要是相同的WiFi网络,所以路由器不会充当NAT和防火墙。 –

我会建议使用GCM的细胞 通知和事后作出服务器拉。它肯定速度更快,您可以使用简单的REST服务器来提供数据。

您需要将您的PC作为服务器和您的机器人客户端。