我們在進行TCP通信時,當服務器端(監聽一個端口)需要處理來自多個客戶端的連接請求時,可以有三種方式:
1.爲每一個客戶端的連接建立一個進程。
2.爲每個客戶端的連接建立一個線程。
3.採用SELECT函數,用單進程完成。
爲每個來自客戶端的連接建立一個進程或線程的方式實現較爲簡單,但是對於像嵌入式系統這樣的環境來說,這兩種方式開銷較大。SELECT方式,可以使用單進程完成。具有較高的處理效率。
當服務器端只監聽一個端口接收來自多個客戶端的連接時SELECT函數的用法:
1.按照老方法,初始化監聽端口;
創建套接字,bind,listen。
2.創建fd_set變量rset, FD_SET(fd,&rset)。