2012-02-02 114 views
0

我使用TCPsocket来通信客户端和服务器。Android:在两个系统之间发送/接收数据

客户端代码:

InetAddress inet = InetAddress.getByName("localhost"); 
int TCP_SERVER_PORT = 21111; 
Socket s = new Socket(inet, TCP_SERVER_PORT); 
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); 
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 
String outMsg = "connect" + TCP_SERVER_PORT+System.getProperty("line.separator"); 
out.write(outMsg); 
out.flush(); 
Log.i("TcpClient", "Client sent - : " + outMsg); 
String inMsg = in.readLine() + System.getProperty("line.separator"); 
textReceived.append("Client received - : " + inMsg); 
Log.i("TcpClient", "Client received - : " + inMsg); 
s.close(); 

Server代码:

ServerSocket ss = null; 
int TCP_SERVER_PORT = 21111; 
ss = new ServerSocket(TCP_SERVER_PORT); 
Socket s = ss.accept(); 
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); 
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); 
String incomingMsg = in.readLine() + System.getProperty("line.separator"); 
Log.i("TcpServer", "received: " + incomingMsg); 
textDisplay.append("Server received - : " + incomingMsg); 
String outgoingMsg = "Port " + TCP_SERVER_PORT + System.getProperty("line.separator"); 
out.write(outgoingMsg); 
out.flush(); 
Log.i("TcpServer", "sent: " + outgoingMsg); 
textDisplay.append("Server sent - : " + outgoingMsg); 
s.close(); 

我用单一的模拟器在我的系统,以测试这个程序。它的工作正常。 现在我需要与两台电脑沟通。

+0

当你说两台电脑时,你的意思是你需要在模拟器的两个实例之间测试这种运行吗? – mcnicholls 2012-02-02 13:49:25

+0

两个模拟器与不同的计算机 – Kamal 2012-02-02 13:54:02

回答

0

由于每个仿真器实例位于虚拟防火墙之后,因此您需要允许主机上的端口重定向到您的仿真器实例。

This页面详细介绍了如何通过telnet连接到模拟器实例并启用端口重定向。

如果您在每台计算机上运行仿真器,然后设置端口重定向,则应该能够通过指定主机的IP和端口来从另一台仿真器实例到另一台仿真器实例。当你有一个重定向的地方,你的主机应该选择它并将其重定向到模拟器实例。

相关问题