客户端代码:
JAVA 中多线程服务端 多个客户端的实现
服务端代码:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;


class ServeOneClient extends Thread...{
private Socket socket;
private BufferedReader in;
private PrintWriter out;


public ServeOneClient(Socket s) throws IOException...{
socket=s;
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
start();
}


public void run()...{

try...{

while(true)...{
String str=in.readLine();
if(str.equals("END")) break;
System.out.println("Echoing:"+str);
out.println(str);
yield();
}
System.out.println("closing......");

}catch(IOException e)...{}

finally...{

try...{
socket.close();

}catch(IOException e)...{}
}
}
}



public class ThreadServerTest...{
static final int PORT=8888;

public static void main(String[] args) throws IOException...{
ServerSocket s=new ServerSocket(PORT);
System.out.println("Server Started");

try...{

while(true)...{
Socket socket=s.accept();

try...{
new ServeOneClient(socket);

}catch(IOException e)...{
socket.close();
}
}

}finally...{
s.close();
}
}
}
客户端代码:
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;


class ClientThread...{
private Socket socket;
// private BufferedReader in;
private PrintWriter out;
int i=0;

public ClientThread(InetAddress addr)...{

try...{
socket=new Socket(addr,ThreadServerTest.PORT);

}catch(IOException e)...{}

try...{
// in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);

while(true)...{
out.println("Client"+": AAA"+(i++));//把AAA改动一下,以便看出不同客户端的访问
}

}catch(IOException e)...{

try...{
socket.close();

}catch(IOException e2)...{}
}
}
}

public class Num1...{

public static void main(String[] args) throws IOException,InterruptedException...{
InetAddress addr=InetAddress.getByName(null);
new ClientThread(addr);
}
}
客户端代码: