题目是这样的,现在有两台客户机pc1 和pc2 一台服务器router,现在pc1连接router把pc2的ip地址和端口以及想说的话信息发给router,router根据收到的信息连接
pc2并把pc1的话发给pc2,pc2收到后做出应答,同样把pc1的ip端口以及应答的话发给router,router再发给pc1 如此循环,问怎末实现?
pc2并把pc1的话发给pc2,pc2收到后做出应答,同样把pc1的ip端口以及应答的话发给router,router再发给pc1 如此循环,问怎末实现?
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringReader;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;public class Client1 implements Runnable{ public void running() throws UnknownHostException, IOException, InterruptedException{
Socket server = new Socket(InetAddress.getLocalHost(),8880);
PrintWriter out = new PrintWriter(server.getOutputStream());
String line = new String("Client1说hello");
out.print(line);
out.flush();
} public void run() {
// TODO Auto-generated method stub
try {
System.out.println("client1启动");
running();
System.out.println("client1关闭");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//************************************** Server就是router ************************************************
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;public class Server implements Runnable{ public void running() throws IOException, InterruptedException{
ServerSocket server = new ServerSocket(8880);
Socket s = new Socket(InetAddress.getLocalHost(),8882);
while(true){
Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream()); out.print(in.readLine());
out.flush();
}
} public void run() {
// TODO Auto-generated method stub
try {
System.out.println("server启动");
running();
System.out.println("server关闭");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//************************************** Client2就是pc2 ************************************************
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;public class Client2 implements Runnable{ public void running() throws UnknownHostException, IOException, InterruptedException{
//Socket server = new Socket(InetAddress.getLocalHost(),8882);
ServerSocket s = new ServerSocket(8882);
String inLine=null;
while(true){
Socket client2 = s.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client2.getInputStream()));
inLine = in.readLine();
System.out.println(inLine);
}
} public void run() {
// TODO Auto-generated method stub
try {
System.out.println("client2启动");
running();
System.out.println("client2关闭");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//************************************** 这是测试类 ************************************************
public class Test { public static void main(String[] args) {
new Thread(new Server()).start();
new Thread(new Client1()).start();
new Thread(new Client2()).start();
}}
了,这本来就是通过路由完成的,你把问题说的那么复杂。
其实就是一个链接、通讯就可以了。