我在一台手机上建立了:
serverSocket =new ServerSocket(6695);
socket=serverSocket.accept();
在另一台手机上
cliSocket=new Socket(ipaddress,port);
调试时候看到两个一直处于阻塞
要如何解决呢?请哪位大侠帮忙!谢谢!!!

解决方案 »

  1.   

    你这里是在你的手机上建立一个socket,另外一个手机是连接另外一个手机的6695端口,两个端口不在同一个设备上,怎么可能连接上。你可以试试端口转发,将手机端口转发到电脑上,但是这样我只用过电脑与手机相连,没试过两个手机相连
      

  2.   

    端口转发用ADB FORWORD命令,自己查下用法吧
      

  3.   

    他这里是这台手机做服务端
    “我在一台手机上建立了:
    serverSocket =new ServerSocket(6695);
    socket=serverSocket.accept();”这在是另一台做客户端
    “另一台手机上
    cliSocket=new Socket(ipaddress,port);”是很正统的 服务端+客户端 
    完全可以正常连接
      

  4.   

    serverSocket.accept();
    这个方法就是阻塞的,会一直停在这一步直到有client连进来。至于你说client端也在阻塞,可能是找不到serverSocket,你可以ping一下看能通否。
    client这端代码可以优化,设置timeout时间Socket client = new Socket();
    client .connect(socketAddr, TIMEOUT时间);
    这样在TIMEOUT后如果连接不成功会返回的。
      

  5.   

    下载了一个手机ping软件,从一台手机上ping另一台手机的ip地址,显示服务器不可达!
      

  6.   

    手机用wifi连到同一个ap的话,就会处于同一个局域网内,应该能正常连接;
    用3G卡的话,如果是同一个服务商,也有可能会处于同一个局域网内(基本上手机每次重启后分配到的IP都会改变,而且每次的IP都可能是不同的局域网,多试几次就有可能两台手机都处于同一个局域网内了)另外,走的是tcp,服务器需要调用serverSocket.bind
      

  7.   

    我用traceping软件,发现路由中有两个服务器阻塞。
      

  8.   

    不太懂。应该就是一个简单的TCP吧