网络套接字编程结构图

 Winsock编程原理

Winsock分1.1版和2.x版,从Windows98开始都使用2.x版。Winsock 2网络应用程序运行时通过使用系统目录中的动态链接库ws2_32.dll访问TCP/IP协议栈,用VC++6.0开发时,Winsock 2中所用的函数声明、常数等等均是在头文件winsock2.h内定义的,若想使用Winsock 2,须连接的库是ws2_32.lib。应用程序中使用流套接字和数据报套接字的方法如下框图所示:

https://i-blog.csdnimg.cn/blog_migrate/c4cff4559b73cd706cd2639a8a3b7399.jpeg

Winsock的启动和中止

由于Winsock 2提供的API服务是以动态链接库ws2_32.dll实现的,所以必须先调用

WSAStartup函数对ws2_32.dll进行加载初始化,协商Winsock的版本支持,并分配必要的资源。如果在调用Winsock函数前没有加载Winsock库,则会返回SOCKET_ERROR错误,错误信息是WSANOTINITIALISED.

在应用程序关闭套接字后,还应调用WSACleanup函数终止卸载ws2_32.dll,释放资源.

可用以下函数来实现Winsock的启动,若Winsock启动成功则返回true,否则返回false.

bool InitSocket()

{

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 2, 0 ); //询问Winsock 2.0版本

err = WSAStartup( wVersionRequested, &wsaData ); //加载初始化Windows Sockets DLL

if ( err != 0 ) {

printf("没有Windows Socket动态库!\n");

getch();

return false;

}

if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 ) {

printf("需要Windows Socket 2!\n");

getch();

WSACleanup( );

return false;

}

return true;

}

注意在这里函数类型是bool型的,所以主文件名一定要是cpp而不是c,不然编译时不能通过的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值