ServerSocket accept()不接受Android上的连接

时间:2010-10-27 11:00:18

标签: java android client-server

我正在尝试在我的Android手机上设置ServerSocket,并从我的计算机发送一个char或int或任何东西。

手机上的代码会创建一个ServerSocket,然后在等待连接时阻塞:

ServerSocket serverSocket = ServerSocketFactory.getDefault()
                            .createServerSocket(4444);
Log.d("HostThread", "ServerSocket created:"+serverSocket
                             .getInetAddress().getHostAddress());
Socket socket = serverSocket.accept();

(日志显示“10-27 11:41:43.437:DEBUG / HostThread(23957):ServerSocket创建:0.0.0.0”)

我的电脑上运行的一小段代码试图连接到手机:

Socket s = new Socket("xx.xx.xx.xx", 4444);

...(如果创建了套接字,还有一些更多的位。但是我没有得到这一点,所以把它留下来了!)

基本上,手机正在接受,而电脑没有连接。 xx.xx.xx.xx是我以编程方式获取的手机的公共IP(并且与检查whatismyip.com相匹配)。

我在手机上设置了INTERNET权限。我也能够反向执行此操作(PC上的ServerSocket,手机上的客户端)。

我出错的任何想法?

1 个答案:

答案 0 :(得分:3)

您是在模拟器中还是在真实设备上运行它?据我所知,大多数运营商网络都是NAT,并且不允许连接到设备。如果您在真实设备上运行,这可能是您的问题。

但是,如果您上面的代码只是一个示例 - 并且您实际上不使用端口4444,您还应该知道大多数unix系统(包括Android)将不允许低于1024的端口上的传入连接,除非你有root权限。