91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WinSock API相關函數

發布時間:2020-06-20 16:08:42 來源:網絡 閱讀:303 作者:li19910110 欄目:系統運維

WinSock提供了許多套接字函數,它們并不代表協議的某一個層次,其實質就是一組編程接口,用戶利用這些函數可以很容易地進行編程。
(1)socket函數
socket函數用于創建一個套接字。
語法:

SOCKET socket (
int af,       
int type,     
int protocol  
);

af:標識一個地址家族,通常為AF_INET。
type:標識套接字類型,如果為SOCK_STREAM,表示流式套接字;如果為SOCK_DGRAM,表示數據報套接字。
protocol:標識一個特殊的協議被用于這個套接字,通常為0,表示采用默認的TCP/IP協議。

(2)accpet函數
accpet函數用于接受客戶端的連接請求。返回值是一個新的套接字,它對應于已經接受的客戶端連接,對于該客戶端的所有后續操作,都應使用這個新的套接字。
語法:

SOCKET accept (
SOCKET s,
struct sockaddr FAR* addr,  
int FAR* addrlen
);

s:是一個套接字,它應處于監聽狀態。
addr:是一個sockaddr_in結構指針,包含一組客戶端的端口號、IP地址等信息。
addrlen:用于接收參數addr的長度。

(3)bind函數
bind函數用于將套接字綁定到一個已知的地址上。如果函數執行成功,返回值為0,否則為SOCKET_ERROR。
語法:

int bind (
SOCKET s,                          
const struct sockaddr FAR*  name,  
int namelen                        
);


s:   是一個套接字。
name:是一個sockaddr結構指針,該結構中包含了要綁定的地址和端口號。
namelen:確定name緩沖區的長度。
在定義一個套接字后,需要調用bind函數為其指定本機地址、協議和端口號。

例如,創建一個套接字s,將其綁定到3010端口上,其代碼如下:

int port = 3010;
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
sockaddr_in addr;
addr.sin_family = AF_INET; //內部網絡協議TCP\UDP等
addr.sin_port = htons(port);  //端口號
addr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(s,(LPSOCKADDR)&addr,sizeof(addr))==0)
{
MessageBox("成功");
}

(4)closesocket函數
closesocket函數用于關閉某個套接字。
語法:

int closesocket (
SOCKET s  
);

s:標識一個套接字。如果參數s設置有SO_DONTLINGER選項,則調用該函數后會立即返回,但此時如果有數據尚未傳送完畢,會繼續傳遞數據,然后才關閉套接字。

(5)connect函數
connect函數用于發送一個連接請求。如果函數執行成功,返回值為0,否則為SOCKET_ERROR。用戶可以通過WSAGetLastError得到其錯誤描述。
語法:

int connect (
SOCKET s,
const struct sockaddr FAR*  name,  
int namelen
);


s:標識一個套接字。
name:套接字s想要連接的主機地址和端口號。
namelen:name緩沖區的長度。

(6)htons函數
htons函數將一個16位的無符號短整型數據由主機排列方式轉換為網絡排列方式。
語法:

u_short htons (
u_short hostshort  
);

hostshort:一個主機排列方式的無符號短整型數據。

(7)htonl函數
htonl函數將一個32位的無符號長整型數據由主機排列方式轉換為網絡排列方式。
語法:

u_long htonl (
u_long hostlong  
);


hostlong:一個主機排列方式的無符號長整型數據。

(8)inet_addr函數
inet_addr函數將一個由字符串表示的地址轉換為32位的無符號長整型數據。
語法:

unsigned long inet_addr (
const char FAR * cp  
);

cp:一個表示IP地址的字符串。

(9)listen函數
listen函數用于將套接字置入監聽模式。
語法:

int listen (
SOCKET s, 
int backlog  
);

s:套接字。
backlog:表示等待連接的最大隊列長度。例如,如果backlog被設置為3,此時有4個客戶端同時發出連接請求,那么前3個客戶端連接會放置在等待隊列中,第4個客戶端會得到錯誤信息。

(10)recv函數
recv函數用于從連接的套接字中返回數據。
語法:

int recv (
SOCKET s,       
char FAR* buf,  
int len,        
int flags       
);


recv函數參數的說明如表18.5所示。
表18.5 recv函數參數說明
參數名稱    參 數 描 述
S                  標識一個套接字
Buf              是接收數據的緩沖區
Len             是buf的長度
Flags            表示函數的調用方式,可選值如下:MSG_PEEK_用來查看傳來的數據,在序列前端的數據會被復制一份到返回緩沖區中,但是這個數據不會從序列中移走MSG_OOB_用來處理Out-Of-Band數據


(11)select函數
select函數用來檢查一個或多個套接字是否處于可讀、可寫或錯誤狀態。
語法:

int select (
int nfds, 
fd_set FAR * readfds,               
fd_set FAR * writefds,              
fd_set FAR * exceptfds,             
const struct timeval FAR * timeout  
);

select函數參數說明如表18.6所示。
表18.6 select函數參數說明
參數名稱       參數描述
nfds                沒有實際意義,只是為了和UNIX下的套接字兼容
readfds           標識一組被檢查可讀的套接字
writefds           標識一組被檢查可寫的套接字
exceptfds        是被檢查有錯誤的套接字
timeout            標識函數的等待時間



(12)send函數
send函數在已經建立連接的套接字上發送數據。
語法:

int send (
SOCKET s,              
const char FAR * buf,  
int len,               
int flags              
);

send函數參數說明如表18.7所示。
表18.7 send函數參數說明
參數名稱     參數描述
s                    標識一個套接字
buf                是存放要發送數據的緩沖區
len                 標識緩沖區長度
flags              標識函數的調用方式

(13)WSAStartup函數
WSAStartup函數用于初始化WS2_32動態庫。它應該是應用程序第1個調用的Windows Socket函數,用于確定Windows Socket使用的版本。
語法:

int WSAStartup (
WORD wVersionRequested,  
LPWSADATA lpWSAData  
);

wVersionRequested:標識調用者使用的Windows Socket的版本,高字節記錄修訂版本,低字節記錄主版本。例如,如果Windows Socket的版本為2.1,則高字節記錄1,低字節記錄2。
lpWSAData:記錄Windows Socket的詳細信息。
下面的代碼用于確定Windows Socket使用的版本。

WSADATA wsd;
WSAStartup(MAKEWORD(2,2),&wsd);

14)WSACleanup函數
WSACleanup函數與WSAStartup函數是相對的,用于終止使用WS2_32動態庫。
語法:

int  WSACleanup (void);

(15)WSAAsyncSelect函數
WSAAsyncSelect函數用于將網絡中發生的事件關聯到窗口的某個消息中。
語法:

int WSAAsyncSelect (
SOCKET s, 
HWND hWnd, 
unsigned int wMsg, 
long lEvent 
);

WSAAsyncSelect函數參數說明如表18.8所示。
表18.8 WSAAsyncSelect函數參數說明
參數名稱        參數描述
s                      標識套接字
hWnd              標識窗口句柄
wMsg              標識窗口消息
lEvent               標識網絡中的事件

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长汀县| 建昌县| 营山县| 武穴市| 开阳县| 金阳县| 拉萨市| 晴隆县| 大新县| 朝阳县| 易门县| 荥经县| 永康市| 小金县| 固阳县| 且末县| 呼玛县| 贵德县| 克山县| 衡山县| 拉孜县| 称多县| 凉山| 保德县| 莆田市| 通城县| 永顺县| 衡阳县| 平远县| 蒙阴县| 项城市| 三明市| 永和县| 玉门市| 中山市| 卫辉市| 交口县| 乐山市| 桐柏县| 正镶白旗| 竹北市|