模拟器作为服务器,模拟器运行的PC作为客户端,PC连接127.0.0.1:6100,可以连接,收发正常。
PC的地址是192.168.1.105,模拟器的地址是192.168.1.110.现在用另外一台PC作为客户端,地址192.168.1.101,想要和模拟器建立TCP连接。
连接192.168.1.105:6100或者连接192.168.1.110:7100,都连接不上。有人碰到过这种问题吗?是什么原因呢?另外在控制台运行netstat -b,看到6100端口是adb.exe占用,而非emulator-arm.exe。但如果用模拟器作client的话,占用端口的就是emulator-arm.exe。是不是和这个有关系呢?

解决方案 »

  1.   

    哈哈,这个问题我以前也遇到过
    你可以先用telnet验证一下,telnet到模拟器上试试
    我以前的问题就是,两个模拟器在同一个PC上运行(当然PC是用xshell连接到server)就可以通信,而不同的PC就有问题(两个PC都连服务器)
    其实adb所占用的端口是和tcp的端口差2好像一些调试方法:
    启动模拟器的时候加上-verbose,把qemu的相关log开关打开
    qemu代码在/external/qemu,最好读一下代码才能知道哪出问题了
      

  2.   

    谢谢楼上的朋友,我试了telnet连不上,映射端口附近的端口都试了也不行。
    后面用-verbose启动模拟器,看到了很多输出信息。qemu的相关log开关这段不太懂怎么搞。用netstat -na发现 adb在监听127.0.0.1:6100。另外eclipse和adb以及emulator等的连接好像都是通过127.0.0.1的某些端口。在网上查了一下,看大家说127.0.0.1是不经过网卡的,也就是说是在机器内部测试用的。所以我想可能是外面访问的端口和这个127.0.0.1的端口没有映射,所以收不到。最后使用真机测试了,程序装到真机后用真机ip:7100可以连接。看来以后只能这么调试了,我哭
      

  3.   

    qemu默认是不开debug的,你要改代码,把一个宏加到main函数里就ok了。
    如果是127.0.0.1那只有本机知道了
    有真机就用真机测试,毕竟模拟器有很多问题,我们当初是做双模实在没地方找真机
      

  4.   

    感谢cdbdyx热心解答。
    deadline快到了,我先用真机了,幸好真机还能连通,这个问题以后再慢慢研究。