本文共 1208 字,大约阅读时间需要 4 分钟。
win套接字简称 Winsock
两者其实差异不大
作者用的是codeblocks 只需要在编译器-》链接器设置中添加 E:\CodeBlocks\MinGW\lib\libws2_32.a(libws2_32这个库就ok啦,位置因人而异~)
首先必须调用WSAStartup函数,设置程序中用到的Winsick版本,并初始化相应版本的库
#include// wVersionRequested:程序员要用的Winsock版本信息 ;// lpWSAData:WSADATA结构体变量的地址值int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);成功返回0,失败返回非零的错误代码值
上方函数参数的说明:
有必要给出上述两个参数的详细说明。 先说第一个, Winsock 中存在多个版本,应准备WORD类型 (WORD
是通过 typedef
声明定义的 unsigned short
类型)的套接字版本信息,并传递给该函数的第一个参数 wVersionRequested
。若版本为1.2,则其中1是主版本号,2是副版本号,应传递 0x0201。 如前所述,高8位为副版本号,低8位为主版本号,以此进行传递。主要使用22版本 故应传递0x0202。不过,以字节为单位手动构造版本信息有些麻烦,借助 MAKEWORD
宏函数则 能轻松构建WORD
型版本信息。 MAKEWORD(1,2); //主版本为1 副版本为2 返回0x0201MAKEWORD(2,2); //主版本为2 副版本为2 返回0x0202
再说第二个参数lpWSADATA
这个参数需要传入 WSADATA
型结构体变量地址(LPWSADATA
是WSADATA的指针类型)
int main(int argc, char* argv[]){ WSADATA wsaData; ...... if(WSAStartup(MAKEWORD(2,2),&wsaData) != 0){ ErrorHandling("WSAStartup() error!"); } ...... return 0;}
前面介绍了Winsock相关库的初始化方法,接下来是如何注销该库————利用下面的函数(WASCleanup(void))
#includeint WSACleanup(void);成功时返回0,失败时返回SOCKET_ERROR
具体的实践过程见下一节内容1.4
转载地址:http://qjzwi.baihongyu.com/