虽然 Internet 浏览在模拟器中工作,但我的应用程序也在模拟器中运行,无法通过 TCP 端口 5222 连接到 Internet 上的服务器。我很确定我的路由器或我的电脑上没有涉及防火墙,因为我可以从我的电脑远程登录到那个 ip:port。
这是在模拟器上截取的 packettrace 的屏幕截图:http://i.stack.imgur.com/sIFFM.png
模拟设备上的数据包跟踪显示,每个发送到该特定端口的 SYN 数据包都使用 RST、ACK 进行应答,并且连接被我的应用关闭并出现“连接错误”。
为什么模拟器会阻止(?)这些端口?我该如何更改它?
最佳答案
模拟器在它自己的网络上运行,所以如果你想通过不同的端口进行通信,你必须为非标准端口正确设置转发。
如果你想让外部应用程序连接到你在模拟器中运行的应用程序,你需要设置你的转发,这样外部应用程序将连接到你的开发机器上的端口,模拟器会将它的连接转发到 10.0.2.15这是模拟器地址。
有关更多信息,请参阅开发指南:
http://developer.android.com/guide/developing/tools/emulator.html#connecting
关于Android 模拟器 (qemu) 不允许某些 tcp 连接(RST,ACK 作为对 SYN 的回答),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740966/