看windows網路程式設計第二版的時候,看到select模型,書上只有乙個客戶端連線的例子,如果是多個客戶端的話,服務端就需要適當的改一下,下面是我自己改的步驟,不過還有很多細節沒有處理,將就著看看;
1.一些初始化的操作
//初始化版本
int init_ret = wsastartup(makeword(2,2), &data);
if(init_ret == socket_error)
//有客戶端連線了,就把所有連線的客戶端socket乙個個fd_set,新增到fd_read集合中
for(std::vector::iterator it = vec_socket.begin(), isize = vec_socket.end(); it != isize; ++it)
//開始檢索各個sokcet的讀寫狀態
int ret = -1;
timeval timeval;
timeval.tv_sec = 1; //這裡一定要設定乙個很小的超時,如果把select的最後乙個引數設定成null,多個客戶端socket的話,就有點問題了,可以自己試試
timeval.tv_usec = 0;
if((ret = select(0, &fd_read, null, null, &timeval)) == socket_error)
; recv(fd_read.fd_array[i], buff, 1024, 0);
std::cout《服務端大概就是這4個步驟了,客戶端的話隨便寫乙個阻塞模式的就行,多開幾個客戶端去連線服務端;
源**在此:
socket模型處理多個客戶端
最近學完了簡單的socket程式設計,發現其實socket的網路程式設計其實並沒有什麼難度,只是簡單的函式呼叫,記住客戶端與服務端的步驟,寫起來基本沒有什麼問題。在伺服器程式的設計中,乙個伺服器不可能只相應乙個客戶端的鏈結,為了響應多個客戶端的鏈結,需要使用多執行緒的方式,每當有乙個客戶端連線進來,...
SOCKET客戶端程式設計
1.建立socket物件 socket建構函式有4個引數,第乙個是family,代表位址家族af net,af net6等,第二個是type,套接字型別sock stream 流套接字 和sock dgram 資料報套接字 import socket s socket.socket socket.a...
Socket實現HTTP客戶端
前些日子用 wininet做專案。功能忒強大了。但總覺得管理cookie有點不方便。即使設定了自己手動管理cookies。這天上掉餡餅的事還真的常常發生。比如你之前用瀏覽器訪問了這個站,留下了cookie 你再用wininet訪問的時候,這個餡餅就出現了。封包不難 連線後。將 headers一股腦堆...