首页 文章

ServerSocket正在使用ip / ::

提问于
浏览
0

我正在为Android制作聊天应用程序,目前正在测试2个模拟器和通过usb连接的手机 . 在过去的24小时里,我无法让Socket连接到ServerSocket . 每个主机都使用ServerSocket,以便通过其客户端套接字监听其他主机“通话” .

对于这两个模拟器,打印出以下两行代码: The server socket is using ip: /::

serverSocket = new ServerSocket(portNo);
Log.i("MY_TAG", "The server socket is using ip: " + serverSocket.getInetAddress() );

使用以下代码行,我得到一个ConnectionException,说它无法连接到指定的ip和端口,并且连接超时:

socket = new Socket(addr, portNo);

我获取ip的方式是每隔20秒查询一次服务器,在php脚本中,我使用 $_SERVER['REMOTE_ADDR'] 确实返回了我的ip地址 .

当使用手机向模拟器发送消息时,我得到一个稍微不同的错误 . 我得到一个ConnectionException就像模拟器一样,除了它还说“Connection refused” .

当从模拟器向手机发送消息时,由于超时,我得到一个ConnectionException .

手机的ServerSocket正在使用ip 0.0.0.0,我知道这很好,因为这意味着它只是在监听所有接口 .

在所有情况下,Server Socket的accept()方法永远不会返回 .

使用 netstat -an (我使用Windows作为我的操作系统),我没有看到我的ServerSockets在输出中列出的任何端口 .

使用telnet,我在模拟器上尝试时会收到连接被拒绝消息(使用php的 $_SERVER['REMOTE_ADDR'] 来获取ip) .
当我在手机的IP和监听端口上使用telnet时,我得到连接超时 .

那就是说,请帮我弄清楚如何连接这些插座 .

1 回答

  • 0

    简单的答案就是我试图做的事情是当我真的要把NAT分配给主机's internal port when a message was sent out. Here' sa图片来描述我说的话时(取自讲座)加州大学圣地亚哥分校令人敬畏的网络教授Alex C. Snoeren的幻灯片:
    enter image description here

    我的解决方案是通过让一个ServerSocket一直监听某些webhost上的新连接来重新设计我正在做的事情 .

相关问题