這里僅僅只是加了一個外層的While循環.這個循環的目的就是當一個客戶進來就為它分配一個Socket直到這個客戶完成一次和服務器的交互,這里也就是接受到客戶的"End"消息.那么現在就實現了多客戶之間的交互了.但是.問題又來了.這樣做雖然解決了多客戶,可是是排隊執行的.也就是說當一個客戶和服務器完成一次通訊之后下一個客戶才可以進來和服務器交互.無法做到同時服務.那么要如何才能同時達到既能相互之間交流又能同時交流呢?很顯然這是一個并行執行的問題了.所以線程是最好的解決方案.
那么下面的問題是如何使用線程.首先要做的事情是創建線程并使得其可以和網絡連線取得聯系.然后由線程來執行剛才的操作.要創建線程要么直接繼承Thread要么實現Runnable接口,要建立和Socket的聯系只要傳遞引用就可以了.而要執行線程就必須重寫run方法.而run方法所做的事情.就是剛才單線程版本main所做的事情.因此我們的程序變成了這樣:
import java.net.*;
import java.io.*;