在(一)中,客户端和服务器之间只有一个通讯线程,所以它们之间只有一条Socket信道。如果我们引入多线程机制,则可以让一个服务器端同时监听并接收多个客户端的请求,并同步地为他们提供通讯服务。基于多线程的通讯方式,将大大地提高服务器端的利用效率,并能使服务器端能具备完善的服务功能。
下面通过一个例子来加深理解:
第一步:写服务端线程类
public class ThreadServer extends Thread {
private static String NAME = "服务器Deny";
private BufferedReader reader;
private PrintWriter writer;
private Socket socket;
private String str;
@Override
public void run() {
try {
while (true) {
str = reader.readLine();
if (str.endsWith("byebye"))
break;
System.out.println("客户端---" + socket + "说:" + str);
writer.println("我是" + NAME + ",客户端说:" + str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public ThreadServer(Socket s) {
try {
socket = s;
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
writer = new PrintWriter(new OutputStreamWriter(
socket.getOutputStream