我正在尝试创建一个简单的应用程序。我想让我的手机成为服务器插座,我正试图从我的电脑发送消息,在这种情况下,我的电脑就是客户端。
当他们在同一个网络中时,它工作正常,但当我将手机连接到3G网络时,我在电脑中收到错误"连接超时"。
我使用的主机没有ip(在这两种情况下)。例如,当我执行"telnet mycellphonehost.org 8080"时,我没有问题,它可以连接。我认为无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()); }
-
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:他们必须在不同的网络
我建议对单元格使用GCM通知,然后进行服务器拉取。它当然要快得多,而且您可以使用一个简单的REST服务器来提供数据。
你需要让你的电脑成为服务器,让你的机器人成为客户端。