2010-10-27 83 views
4

我想在我的Android手机上的ServerSocket上设置,并从我的电脑发送一个char或int或任何东西。ServerSocket接受()不接受Android上的连接

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

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

(日志称“十一月10日至27日: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,客户端电话)。

任何想法我错了吗?

回答

3

你是在模拟器还是在真实设备上运行它?据我所知,大多数运营商网络都是NAT,并且不允许连接到设备。如果您在真实设备上运行,这可能是您的问题。但是,如果你的代码仅仅是一个例子 - 而你实际上并没有使用4444端口,那么你也应该意识到大多数unix系统(包括Android)不允许在低于1024的端口上的传入连接,除非你有root权限。

+0

我在一个真实的设备上运行,连接到我的移动网络。你是否说这样的传入连接是不可能的? – lukeo05 2010-10-27 11:13:28

+0

@ lukeo05不可能取决于您的网络运营商:)询问您的运营商,他们应该知道! – 2010-10-27 11:15:21

+0

我认为它有可能通过Wifi?这似乎是我唯一的选择,如果网络运营商说不! – lukeo05 2010-10-27 11:19:11