两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

上一節(jié)我們介紹了客戶端與服務(wù)端相互通信的模型圖,每一步都有具體的函數(shù)實(shí)現(xiàn),但需要明白的是,使用這些函數(shù)之前,在Windows系統(tǒng)下,需要先調(diào)用WSAStartup函數(shù)進(jìn)行必要的初始化,才可以順利的進(jìn)行,

而使用WSAStartup函數(shù)又需要事先包含對應(yīng)的頭文件winsock2.h及靜態(tài)庫ws2_32.lib文件(在windows環(huán)境下)

具體如下:


函數(shù)功能:

用于初始化Socket編程,指明Windows系統(tǒng)中Socket( )版本

依賴靜態(tài)庫庫:

ws2_32.lib

需要用#pragma命令包含,即:

#pragma comment(lib,"ws2_32.lib")    //表示鏈接Ws2_32.lib這個庫。ws2_32.lib是Winsock2的庫文件。

函數(shù)原型:

int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

返回值類型:

整型 

返回值:

成功返回0,失敗返回-1

參數(shù)說明:

第一個參數(shù)wVersionRequested為 WinSock 規(guī)范的版本號它的類型WORD,所以要用MAKEWORD( )宏函數(shù)對它的版本號進(jìn)行轉(zhuǎn)換。低字節(jié)為主版本號,高字節(jié)為副版本號。

代碼示例:

wVersionRequired=MAKEWORD(1,2)   //即主版本號是1,副版本號位2,那么它表示的就是調(diào)用WinSock 1.2版本。     現(xiàn)在我們一般用2.2版本 ,即MAKEWORD(1,2)

                     

第二個參數(shù)lpWSAData 為指向 WSAData 結(jié)構(gòu)體的指針。其定義原型如下:

typedef struct WSAData {
	WORD		wVersion;    //ws2_32.dll 建議我們使用的版本號
	WORD		wHighVersion;    //ws2_32.dll 支持的最高版本號
#ifdef _WIN64
	unsigned short	iMaxSockets;     //2.0以后不再使用
	unsigned short	iMaxUdpDg;     //2.0以后不再使用
	char		*lpVendorInfo;     //2.0以后不再使用
	char		szDescription[WSADESCRIPTION_LEN+1];  //一個以 null 結(jié)尾的字符串,用來說明 ws2_32.dll 的實(shí)現(xiàn)以及廠商信息
	char		szSystemStatus[WSASYS_STATUS_LEN+1];  //一個以 null 結(jié)尾的字符串,用來說明 ws2_32.dll 的狀態(tài)以及配置信息
#else
	char		szDescription[WSADESCRIPTION_LEN+1];   //32位版本,同上
	char		szSystemStatus[WSASYS_STATUS_LEN+1];   //32位版本,同上
	unsigned short	iMaxSockets;    //32位版本,同上
	unsigned short	iMaxUdpDg;    //32位版本,同上
	char		*lpVendorInfo;    32位版本,同上
#endif
} WSADATA, *LPWSADATA;


怎么樣,看清楚真實(shí)面貌了吧,因此我們只需要包含頭文件、靜態(tài)庫,然后完善這兩個參數(shù),傳入WSAStartup調(diào)用即可。

當(dāng)然,完整可編譯的代碼,則需要將以上代碼放入main函數(shù)中,并且包含對應(yīng)的頭文件及相對應(yīng)的靜態(tài)庫,使用方式如下:

//www.sztianhecheng.cn
#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")

int main()
{
WSADATA wsaData;
WSAStartup( MAKEWORD(2, 2), &wsaData); //目前建議使用最新2.2版本

//以下為測試信息,打印相應(yīng)的數(shù)值用于測試
printf("wVersion: %d.%d\n", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion));
printf("wHighVersion: %d.%d\n", LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));
printf("szDescription: %s\n", wsaData.szDescription);
printf("szSystemStatus: %s\n", wsaData.szSystemStatus);

return 0;
}


WSAStartup示例


大家可以實(shí)行上機(jī)試驗(yàn)。


在介紹完WSAStartup函數(shù)后我們就要按順序講解socket( )、bind( )、listen( )、accept( )、recv( )、send( )、closesocket( )這些函數(shù)了。


點(diǎn)贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時間)