本人初学Android,想用PC端做Server,Android手机做Client进行UDP通信。在模拟器环境下已经实现该功能,运行正常。但将apk安装到真机,就跑不起来了,手机一开始发送数据包就发生异常。由于模拟器上一期正常,不知道这个异常发生在什么位置,也就没能获取是什么异常。有人遇到过这样的问题吗?PS:Android端有Internet权限,已经在PC端进行了端口重定向“adb forward tcp:5556 tcp:5555”。在模拟器上用ip地址10.0.2.2或者本机ip 192.168.2.101都运行正常,一旦挪到真机上就不行了

解决方案 »

  1.   


    不是,就是让手机通过USB链接,使用UDP协议向PC段发送数据。
    求高人指点啊!!!
      

  2.   

    真机通过USB通信,pc和手机ip地址都用127.0.0.1
      

  3.   


    这位大哥,我尝试了使用上述IP,但还是没有成功。手机作为客户端确实在发送数据包,但PC段没有收到数据。貌似是手机向127.0.0.1发送数据就是在给自己发送数据,而没有向PC发送。
    两端都是127.0.0.1的话,客户端和服务端如何定位对方的地址呢?
      

  4.   


    这要通过端口识别!真机做服务器 IP用127.0.0.1,端口任意!
    PC上IP也用127.0.0.1,通过adb forward 重定向到该端口,即可通信
      

  5.   


    课多啊终于抽时间又搞了搞。按这位大哥给的说法实现了一种通信方式,即PC端作为Client,手机端作为Server,使用TCP协议实现了通过USB的通信。但是其他几种方式都没能实现。下面一一列举各种情况:
    1、PC端作为Server,手机端作为Client,使用UDP协议,PC端Server侦听本地端口5556运行正常,手机端一直显示异常ConnectException: /127.0.0.1:5556 - Connection refused,无法建立连接;
    2、PC端作为Server,手机端作为Client,使用TCP协议,PC端的Server程序都无法正常运行,显示异常“一个套接字通常只能绑定一次”,即无法侦听用于重定向的本地端口5556;
    3、PC端作为Client,手机端作为Server,使用TCP协议,PC端Client主动连接重定向端口5556,手机端侦听端口5555,建立连接后反向传递数据,已经成功;
    4、PC端作为Client,手机端作为Server,使用UDP协议,没有实现,因为我的目标是要实现PC获取手机传输的信号,PC做Client进行无连接访问手机无法反向传输数据。综合上述四种情况,我总结出新的问题和心得=。= 
    “adb forward tcp:5556 tcp:5555”指令将本地端口5556重定向到手机,在PC本地该端口就不能再被socket绑定侦听了,原理使然,需要PC端去连接该重定向的端口,那么PC端使用TCP连接就必然不能成为Server。那么针对情况一,使用UDP侦听该端口时系统没有报异常,那是不是真正有效的侦听了该端口呢?这个一个问题。感觉上是没有。
    另外,如果要让PC端获取手机端发送的数据,必须让手机端建立连接方向发送数据,这么一来就不能用PC做Client使用UDP向手机发起请求。加上上面的问题,这么一来感觉UDP协议几乎就不能用在PC和手机通信的过程中了。到底能不能用啊?貌似在网上看到过有人说成功实现过UDP通信的,不知道怎么实现的。做了不少实验,有上述两个疑问,求指教~~~~~
      

  6.   

    其实是有方法的,我这是这么解决的
    1,你要有无线路由
    2,手机利用wifi连接无线路由
    3,电脑连上路由
    4,android程序UPD到service的时候就用电脑在路由中的地址(192.168.1.X)
    因为你电脑和手机在一个网段,所以手机是可以找到电脑的
      

  7.   

    也许你可以使用另一种方法 ,PC电脑和Android模拟器访问及模拟器之间tcp/udp通信
      

  8.   

    http://blog.csdn.net/nec_xhf/article/details/7592326  这个可以实现