重疊IO 通訊模型,函式記錄。

2021-05-23 19:15:18 字數 1552 閱讀 2480

socket wsasocket(

int af,

int type,

int protocol,

lpwsaprotocol_info lpprotocolinfo,

group g,

dword dwflags

);

af

[in] 指明位址協議家族。一般都是使用ip協議。 一般的引數都是 af_inet

type

[in] 指明該通訊是什麼樣的資料格式。tcp 還是udp 等。 (sock_stream 引數指 資料流格式 tcp格式,

sock_dgram 是udp 資料報格式。)

) protocol

[in]

使用的特定協議,如果呼叫者不願指定協議則定為0。 一般指定為:ipproto_tcp 表示使用tcp協議。

lpprotocolinfo

[in] 指定下層服務的提供者。 g

[in] 保留字。

dwflags

int wsasend(

socket s,

lpwsabuf lpbuffers,

dword dwbuffercount,

lpdword lpnumberofbytessent,

dword dwflags,);s

[in]欲傳送訊息的套接字

lpbuffers

[in] 傳送的緩衝區

dwbuffercount

[in] 傳送的緩衝區的大小

lpnumberofbytessent

[out]返回傳送成功的位元組個數。

dwflags

[in]標誌

lpcompletionroutine

[in] 指定乙個完成例程。

2、使用

lpcompletionroutine 指向的完成例程。完成例程是乙個自定義的函式,io操作完成後,就去呼叫它。這種方法使用的很少,將

lpcompletionroutine 設定為null即可。

前四個引數,由系統內部呼叫,使用時不用操作這四個引數。

hevent是乙個事件物件的控制代碼,可以關聯乙個事件物件,當io完成後,會通知該事件物件。

socket s,

, lpdword lpcbtransfer

, bool fwait

, lpdword lpdwflags

獲取重疊操作的結果。

s[in] 欲獲取的io操作相關的套接字

lpcbtransfer

[out] 獲取實際傳輸的位元組數。

fwait

[in] 標誌是否等待還未完成的io操作,如果是true的話,會等到io操作完成之後,函式才返回。

lpdwflags

[out]獲取更詳細的完成的狀態

高效通訊模型之 非同步通訊模型

非同步模型 非同步和同步 同步,就是在發出乙個功能呼叫時,在沒有得到結果前,呼叫不返回 非同步,當乙個非同步過程呼叫發出後,呼叫者不能立即得到呼叫結果,而是通過狀態,通知和 來通知呼叫者。通過檢查狀態來判斷非同步呼叫結果,效率會很低,因為需要週期性檢查狀態 函式和通知差不多 同步呼叫與阻塞呼叫 對於...

C S通訊模型與B S通訊模型介紹

1 客戶端與伺服器之間的通訊模型 基於socket連線的客戶端與伺服器之間的通訊模型圖如上圖所示,整個通訊過程如下所示 1 伺服器端首先啟動監聽程式,對指定的埠進行監聽,等待接收客戶端的連線請求 2 客戶端程式啟動,請求連線伺服器的指定埠 3 伺服器收到客戶端的連線請求後與客戶端建立套接字 sock...

C S通訊模型與B S通訊模型介紹

1 客戶端與伺服器之間的通訊模型 基於socket連線的客戶端與伺服器之間的通訊模型圖如上圖所示,整個通訊過程如下所示 1 伺服器端首先啟動監聽程式,對指定的埠進行監聽,等待接收客戶端的連線請求 2 客戶端程式啟動,請求連線伺服器的指定埠 3 伺服器收到客戶端的連線請求後與客戶端建立套接字 sock...