模拟器当服务端,PC当客户端java
一、首先要进行端口映射,端口映射的方法:android
利用telnet命令服务器
telnet 127.0.0.1 5554 (链接5554模拟器)ui
redir add ::(增长端口映射:例如,redir add udp:6000:6000 将PC的6000端口映射到模拟器的6000端口,这样当访问PC的6000端口时,就会映射到模拟器上,即访问模拟器的6000端口)spa
二、android服务器端关键代码code
public void Server(){
new Thread(){
public void run(){
try {
DatagramSocket server = new DatagramSocket(6000);//监听6000端口
byte[] recvBuf = new byte[100];
DatagramPacket recvPacket = new DatagramPacket(recvBuf , recvBuf.length);
while(true){
server.receive(recvPacket);
String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength());
if(recvStr.equals("quit")){
System.out.println("与"+recvPacket.getAddress()+"通讯结束");
return;
}
System.out.println("received:" + recvStr);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}三、PC客户端代码
private void client() {
try {
DatagramSocket client = new DatagramSocket();
while(true){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while((str = br.readLine()) != null){
byte[] sendBuf = str.getBytes();
InetAddress addr = InetAddress.getByName("127.0.0.1");
int port = 6000;
DatagramPacket sendPacket = new DatagramPacket(sendBuf ,sendBuf.length , addr , port);
client.send(sendPacket);
if(str.equals("quit")){
client.disconnect();
return;
}
}
}
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}