我目前正在尝试通过 TCP/IP 套接字连接来连接模拟器(客户端)和电话(服务器)。但不知何故它永远不会工作,但如果我尝试将模拟器(作为客户端/服务器)与内部java程序(作为客户端/服务器)连接起来,它工作正常,套接字连接也可以从电话到不在模拟器上的应用程序正常工作。我认为这与端口转发有关,所以我尝试了:
来自如何将我的本地主机 IP 地址转发到 Android 模拟器
telnet localhost 5554
redir add tcp:1337:12345
但是当我用端口号 1337 和服务器端 12345 测试我的客户端时,它仍然无法正常工作,服务器代码不会 .accept() 客户端的请求。
以下是我的客户端(模拟器)和服务器(电话)代码,用于接受和设置 io 流
客户:
SERVER_IP 是本地 ip 地址
connection = new Socket(SERVER_IP, PORT);
private void setUpStreams() throws IOException {
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
}
服务器:
那是为了接受用户私有 void acceptingUser() {
try {
ss = new ServerSocket(PORT, 10);
connection = ss.accept();
connected = true;
osm.updateInChatStatus(1);
} catch (IOException e) {
// TODO Auto-generated catch block
Log.i("serv", "Wasn't able to connect with any clients!: " + e);
}
}
并且设置流与客户端的流非常相似。提前感谢您的建议和解决方案。