PC上有一个服务,持续的监听本机的6000端口(0.0.0.0:6000)。    Android设备是一块MOTO XOOM的板子,装的是android3.0的系统。在板子上装了一个AP,这个AP包含一个service。service在启动后,每3秒尝试连接127.0.0.1:6000试图与PC建立socket连接。。
    
    在模拟器上尝试过,AP可以成功地连接10.0.0.2:6000可以与服务器建立连接,说明代码应该没什么问题。
    现在adb也可以检测到XOOM,运行adb命令也都成功了。
    所以我想问的是,Android端做客户端与PC实现socket通信有什么要注意的?需要使用adb forward命令嘛?android端的AP应该尝试连接什么IP,我使用127.0.0.1和PC的内网IP都没能连接上。

解决方案 »

  1.   

        个人认为,PC端作为服务器的话,应该是不需要使用forward命令的。forward命令执行的结果是adb持续监听PC端的指定端口,并将这个端口的数据发送给Android端的指定端口。
        在PC端已经绑定了监听端口的情况下,adb forward命令根本无法执行成功。
        那样的话,android端的AP试图去连接PC上的服务时,它应该如何指定连接的端口呢?通过USB连接到PC的情况下,Android端和PC端是共享同一个IP还是使用不同的IP的?
      

  2.   

    你可以adb shell进去 看看你的xoom版子的IP是多少
      

  3.   

    不懂,难道还需要端口重定向?但android端只做客户端啊 等高手解答
      

  4.   

    XOOM ... 我也想要... 买不起...
      

  5.   

    即使通过USB连接到PC,XOOM和PC还是自己使自己的IP啊 ,IP关USB什么事情呢? ping的通么试一试adb pull 些log出来看看 卡在哪里一目了然了 
      

  6.   

        在同事的帮助下,问题已经解决。
         如果服务器端在Android设备上,那么通过adb的端口转发命令就可以实现PC与Android设备的socket通信。
         而如果服务器端在PC上,那么由于Android设备访问不了PC(它们之间没有HDCP服务器),所以无法实现。但是如果通过安装一个额外的驱动(驱动的名字忘记了,把板子插在电脑上,使用win7的update功能更新就OK了),可以使android设备虚拟为PC的网卡,而使android设备作为HDCP服务器,这时,PC和Android设备之间就可以自由的通过socket进行通信了。
        也谢谢各位的大力帮助!
        
        
      

  7.   

        板子是公司的,7000多RMB,都能买一台贼牛的笔记本了,换我也买不起
      

  8.   

        如果是android端作为服务器的话,必须要使用adb forward命令转端口的。
         如果是PC端作为服务器,那你就得用RNDIS驱动了,加了驱动以后,android设备和PC之间会有一个新的局域网存在,使用这个网络中的IP就可以了。
    10.0.0.2这个端口仅限模拟器使用,真机无效的。
      

  9.   

      这个帖子不错,我标记下。 以后来看看。 lz,我想问下,有没有什么办法可以让pc服务器直接发送消息给android端,用来节省流量呢。 ? 类似推送那样,
      

  10.   

        PC服务器直接发送消息给android端?能具体描述么?
         如果是考虑流量的问题的话,使用USB连接,本身就是不需要流量的,因为不访问外网嘛。
         使用wifi局域网的话,也不会使用android手机的流量啊