一.select的引入
多程序的問題:資料共享,程序的上下文環境(context),檔案描述符號是整數以及對應的上下文環境。
多程序中上下文環境無法共享。
二.selecttcp伺服器程式設計模式
1.select函式
intselect(
intfds,//建議是監控的檔案描述符號的最大值+1.
fd_setreadfds,//讀檔案描述符號集合該引數既是輸入也是輸出輸入被監控的描述符,輸出:發生改變(有資料)的描述符
fd_set*writefds,
fd_set*errfds,
structtimeval*timeout);//指定阻塞時間限制為null表示永久
返回:>0:發生改變的檔案描述符號個數
=0:時間限制過期
=-1:異常
2.select通過非同步方式來工作,非同步通過訊號來觸發。
3.應用select
4.poll
intpoll(
structpollfd*fds,//監控的描述符號
intnfds;//監控的描述符號的個數
inttimeout);//阻塞超時
三.socket選項設定
1.soket通用選項:
sol_socket-so_broadcast廣播
so_rcvbuf描述符號的緩衝的大小
so_sndbuf 描述符號的緩衝的大小
so_reuseaddr位址反覆繫結
so_type描述符號型別sock
icmp選項:
ipproto_icmp
icmp_filter
ip選項(控制生成的ip頭)
ipproto_ip
udp選項
ipproto_udp
tcp選項
ipproto_tcp
setsockopt設定選項
getsockopt獲取選項
三.oob資料(tcp)
優先資料
send(,msg_oob)
recv(,msg_oob)
1.oob資料只能是乙個字元
2.普通資料使用一般方式接收與傳送,oob資料使用msg_oob接收與傳送
3.乙個資料使用msg_oob,則最後乙個是oob,其它的是非oob
4.oob是優先資料,靠訊號觸發體現優先順序。
四.http協議以及應用
1.http協議版本http1.0 http1.1
2.http是應用協議(應用級協議)
3.http協議分成:
請求協議
響應協議
4.表示協議的格式
請求行(請求方法 請求資源協議版本)
請求體(請求頭:請求值)
空行資料(querystring:key=value&key=value)
5.響應格式
響應行(協議版本響應碼響應碼的文字描述)
響應體(響應頭:響應值)
空行資料(普通資料/分塊資料)
響應碼:1xx表示正在處理,2xx表示響應成功,3xx表示繼續處理,4xx客戶錯誤,5xx伺服器錯誤
網路程式設計 select模型
select 機制中提供一fd set的資料結構,實際上是一long型別的陣列,每乙個陣列元素都能與一開啟的檔案控制代碼 不管是socket控制代碼,還是其他檔案或命名管道或裝置控制代碼 建立聯絡,建立聯絡的工作由程式設計師完成,當呼叫select 時,由核心根據io狀態修改fe set的內容,由此...
C socket程式設計select模型
在做socket程式設計時,當要處理乙個server對應多個client,這種可以每個客戶端用乙個執行緒來處理,但是客戶端太多,程式的效能會降低。windows提供了select模型,很好的處理了一對多的模型。select的申明如下 int wsaapi select in int nfds,0,無...
socket程式設計(二) select 模型
select 模型是winsock中最常見的i o模型,主要是它能夠防止程式在套接字處於阻塞模式的時候經過一次i o操作後被阻塞,同時也能夠防止套接字處於非阻塞模式產生的wsaewouldblock錯誤 select模式也是最簡單的乙個i o模式 int select int nfds,fd set...