-
多客户端通信实现
客户端程序:
public class MultiTalkClient{
int num;
public static void main(String args[]){
try{
Socket socket=new Socket("127.0.0.1",4700);
//键盘输入流
BufferedReader sin=new BufferedReader(new
InputStreamReader(System..in));
//socket输出流
PrintWriter os=new PrintWriter(socket.getOutputStream());
//socket输入流
BufferedReader is=new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String readline;
while(!readline.equals("bye"))
{os.println(readline);
os.flush();
System.out.println("Client:"+readline);
System.out.println("Server:"+is.readLine());
readline=sin.readLine();
}
os.close();
is.close();
socket.close();
}catch(Exception e){
System.out.println("Error"+e);
}
}
}
服务端程序:
public class MultiTalkServer{
static int clientnum=0;
public static void main(String args[])throws IOException{
ServerSocket serverSocket=null;
boolean listening=true;
try{serverSocket=new ServerSocket(4700);
}catch(IOException e){
System.out.println("Could not listen on port:4700.");
System.exit(-1);
}
while(listening)
{
new ServerThread(serverSocket.accept(),clientnum).start();
clientnum++;
}
serverSocket.close();
}
}
程序ServerThread
public class ServerThread extends Thread{
Socket socket=null;
int clientnum;
public ServerThread(Socket socket,int num){
this.socket=socket;
clientnum=num+1;
}
public void run(){
try{
String line;
BufferedReader is=new BufferedReader(new
InputStreamReader(socket.getInputStream()));
PrintWriter os=new
PrintWriter sin=new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Client"+clientnum+":"+
is.readLine());
line=sin.readLine();
while(!line.equals("bye"))
{
os.println(line);
os.flush();
System.out.println("Server:"+line);
System.out.println("Client:"+clientnum+":"+is.readLine());
line=sin.readLine();
}
os.close();
is.close();
socket.close();
}catch(Exception e){
System.out.println("Error:"+e);
}
}
}