无法将套接字从Android客户端应用程序连接到服

时间:2011-11-19 13:38:30

标签: java android sockets client

我无法将Android手机上的插座连接到运行netcat的计算机上侦听端口(5555)。

我在Android应用中运行的内容:

    try {
        Socket s = new Socket("My IP number here (not local IP)", 5555);
        DataOutputStream outToServer = new DataOutputStream(s.getOutputStream());
        outToServer.writeBytes("Hello!");
        s.close();
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

这是我用于netcat的行:nc -l 5555

我不确定我错过了什么.. 我已经转发了路由器上的端口并重新启动了路由器。在我的Android应用程序中添加了对Internet的权限。 手机通过3G连接,我的电脑通过宽带连接。 我的防火墙允许使用netcat。

尝试连接时,我的应用中出现SocketTimeoutException错误。

我猜路由器负责处理局域网中的哪台计算机将收到请求。

任何人都知道我错过了什么?

编辑:我想我可能已经找到了问题。我的路由器Virtual ServerPort forwarding有两个选项。我不知道在UDP / TCP中设置哪个端口5555。 http://dl.dropbox.com/u/4385192/2011-11-19%2003.17.53%20pm.png enter image description here 根据我的理解Virtual Server我应该使用而不是端口转发?如果是这样,有人可以澄清两者之间的区别吗?

1 个答案:

答案 0 :(得分:1)

自上次配置以来,我的计算机更改了本地IP,因此我的Virtual Server / Port Forwarding规则不适用,因此我对其进行了更新(从192.168.0.199 - > 192.168.0.19 6 )现在效果很好。

所有步骤都适用:

  • 在路由器上为Virtual Server / Port Forwarding设置规则。
  • 在路由器上设置Inbound Filtering规则,以防您希望仅允许列入白名单的IP并传播到下一个安全层。
  • 如果您的路由器有任何其他防火墙设置,请创建规则以允许您建立连接。
  • 在您的服务器/计算机上允许防火墙中的端口或您运行的应用程序接收入站连接。
  • <强>利润!!!