import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
//一个服务器处理多个客户端
public class MutilServerDemo {
public static void main(String[] args) {
ExecutorService es=Executors.newFixedThreadPool(3);//线程池
try{
ServerSocket server=new ServerSocket(6666);
System.out.println("服务器已启动,正在等待链接");
while(true){
Socket s=server.accept();
System.out.println(s.getInetAddress().getHostAddress());
es.execute(new UserThread(s));
}
}catch(IOException e){
e.printStackTrace();
}
}
}
//用来处理客户端请求的线程任务
class UserThread implements Runnable{
private Socket s;
public UserThread(Socket s){
this.s=s;
}
public void run(){
try{
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintStream ps=new PrintStream(new BufferedOutputStream(s.getOutputStream()));
String info=br.readLine();
System.out.println(info);
ps.println("echo:"+info);
ps.flush();
ps.close();
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class MutilClientDemo {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
try{
//创建一个socket对象,指定要链接的服务器是什么
Socket socket=new Socket("127.0.0.1",6666);
//获取socket的输出流,
PrintStream ps=new PrintStream(new BufferedOutputStream(socket.getOutputStream()));//写
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));//读
System.out.println("请输入");
String info=input.nextLine();
ps.println(info);
//ps.println("hello,my name is bin");
ps.flush();
//读取服务器端返回的数据
info=br.readLine();
System.out.println(info);
ps.close();
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
客户端的数据包通过服务器中转,发送到另一个客户端