1? Select 客戶端鏈接數(shù)可以自定義。? #define FD_SETSIZE 2。 必須放在包含winsock頭文件之前。
2? FD_SETSIZE 等于2時,只能接收一個客戶端鏈接。 服務(wù)端socket會占用一個。
3 當 fd_set 結(jié)構(gòu)體達到 FD_SETSIZE 時,F(xiàn)D_SET函數(shù)會失敗。客戶端recv會一直阻塞,但是tcp鏈接是會保持的。
4 FD_ZERO 清空集合。 FD_CLR 刪除集合里的某個套接字。當有新鏈接進來時,需要刪除服務(wù)端套接字,再調(diào)用 accept 接收新的客戶端連接。
5? FD_ZERO,? FD_CLR,? FD_SET,? 線程不安全。
6 FD_ISSET 判斷socket是否在集合中,在的話說明有數(shù)據(jù)來了。如果是服務(wù)端socket,那么就是說明有新鏈接來了。如果是客戶端socket,那么說明客戶端發(fā)送數(shù)據(jù)過來了。
7 select之后。 fdRead 的總數(shù)是有客戶端發(fā)送數(shù)據(jù)的socket總數(shù)。
參考:
1 https://blog.csdn.net/wwxy1995/article/details/88431650
2 https://blog.csdn.net/wjl18270365476/article/details/98474418
3 http://www.cppblog.com/kevinlynx/archive/2014/06/01/207172.html