【问题标题】:Android Java Socket - Connection timed outAndroid Java Socket - 连接超时
【发布时间】:2013-07-01 15:58:48
【问题描述】:

我正在尝试创建一个简单的应用程序。我希望我的手机成为服务器套接字,我正在尝试从我的电脑发送消息,我的电脑是客户端就是这种情况。

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

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

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

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

遵循代码:

  • 安卓服务器

    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());
    }  
    
  • 电脑客户端

    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:它们必须在不同的网络中

【问题讨论】:

  • 您几乎可以肯定在 3g 上与外界隔离 - 很少有运营商允许传入 TCP 连接。
  • Gabe Sechan 您对解决防火墙问题有什么建议吗?或者任何检查是否真的是防火墙?
  • 暂时把它们放在同一个wifi网络上,看看代码是否有效。如果可行,则问题出在网络上,很可能是防火墙。如果没有,那么你有一个我错过的代码问题。不过它必须是同一个 wifi 网络,所以路由器不能充当 NAT 和防火墙。

标签: java android sockets timeout


【解决方案1】:

我建议对单元格使用 GCM 通知,然后进行服务器拉动。它当然要快得多,您可以使用简单的 REST 服务器来提供数据。

你需要让你的电脑成为服务器,你的机器人成为客户端。

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 2015-08-17
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多