TCP程式設計模型select

2021-06-20 02:38:44 字數 1562 閱讀 2367

一.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...