我正在尝试在我的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,手机上的客户端)。
我出错的任何想法?
答案 0 :(得分:3)
您是在模拟器中还是在真实设备上运行它?据我所知,大多数运营商网络都是NAT,并且不允许连接到设备。如果您在真实设备上运行,这可能是您的问题。
但是,如果您上面的代码只是一个示例 - 并且您实际上不使用端口4444,您还应该知道大多数unix系统(包括Android)将不允许低于1024的端口上的传入连接,除非你有root权限。