windows網路程式設計總結(二)
1.
winsokcet architecture
2.
關於
acceptex
使用此函式時,要包含頭文:
mswsock.h
mswsock.lib
。可在源程式中加入下面的語句,這樣在編譯時,將自動鏈結
mswsock.lib。
#pragma comment(lib,」 mswsock.lib」)
下面是使用
acceptex
函式的示例**:
#define strict
#define _win32_winnt 0x0500 // windows 2000 or later
#define win32_lean_and_mean
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"mswsock.lib")
int main()
需要注意的是,通過
wsaioctl
獲取acceptex
函式指標時,只需要傳遞給
wsaioctl
乙個有效的
socket
即可,該
socket
的型別不會影響獲取的
acceptex
函式指標。
如果不希望
acceptex
建立連線後等待使用者傳送資料,那麼必須將第四個引數設為0。第
5、6引數必須是對應
socket
的位址型別的大小再加上
16個位元組。
為了使伺服器能較好的處理使用者連線請求,可採取如下兩種策略: a.
設定兩個界限值,使系統未處理的
accept
操作保持在乙個固定水平。推薦上限為10;
b.通過wsaeventselect
函式監聽
listensocket
上的fd_accept
事件。
當關閉完成埠時,如果還有未處理的
accepte
操作,應該先關閉
listensocket
,然後在
iocp
中,處理這些
accept
操作(進行資源釋放等),切記不要強行終止那些沒有處理的
accept
操作,否則會造成記憶體洩漏。
為防止惡意使用者(建立連線後,不傳送資料),可設定
listensocket
的so_connect_time
屬性。
如果希望
clientsocket
具有和listensocket
相同的屬性,需要對
clientsocket
呼叫so_update_accept_context。
作者blog:http://blog.csdn.net/kendiv/
windows網路程式設計 階段總結 1
幾天以來已經完成了乙個比較高的乙個樓梯,感覺豁然,可以有個階段的總結。下乙個階段將進入winsock的學習,這將給學習帶來實果。對於前階段,主要是熟悉幾個函式,熟悉pipe和mailslot的應用,是乙個基礎,但是沒有非常的仔細的讀過來,我想以後可以買到這樣一本書就可以仔細的研讀。對於讀這樣的一本書...
Windows網路程式設計
1.先總結一些會用到的知識 中計算機都分配乙個位址,該位址是乙個 32位的數值表示 客戶端和伺服器通訊的時候需要指定乙個 ip位址 和埠。ip位址 一般是用 internet標準 點分表示法 像a.b.c.d 一樣指定 的,每乙個字母代表乙個位元組的數字 十進位制 八進位制 或十六進製制 從左到右分...
windows網路程式設計
winsock是windows系統下利用socket套接字進行網路程式設計的相關函式,是windows下的網路程式設計介面。winsock在常見的windows平台上有兩個主要的版本,即winsock1和winsock2。編寫與winsock1相容的程式你需要引用標頭檔案winsock.h,如果編寫...