winsock库

加载Winsock库函数 : WSAStartup

1 int WSAStartup(
2                WORD wVersionRequested,//指定想要加载的winsock库
3                LPWSADATA lpWSAData//指向 WSADATA的指针,用来返回DLL库的详细信息
4 );

WSADat头结构

 1 typedef struct WSAData
 2 {
 3     WORD wVersion;    //库文件建议应用程序使用的版本
 4     WORD wHighVersion;    //库文件支持的最高版本
 5     char szDescription[WSADESCRIPTION_LEN+1];    //库描述字符串
 6     char szSystemStatus[WSASYS_STATUS_LEN+1];    //系统状态字符串
 7     unsigned short iMaxSockets;    //同时支持的最大套接字的数量
 8     unsigned short iMaxUdpDg;    //2.0版中已废弃的参数
 9     char FAR* lpVendorInfo;    //已废弃的参数
10 }WSADATA,FAR* LOWSADATA;

每一个WSAStart调用必须对应一个队WSAClean的调用,这个函数用来释放winsock库

int WSACleanup(void);

如果想使用winsock库,应该包含对应的库文件

1 #pragma comment(lib,"WS2_32")

以后封装的经常用到的CInitSock类

 1 #include <winsock2.h>
 2 #pragma comment(lib,"WS2_32")
 3 class CInitSock
 4 {
 5 public:
 6     CInitSock(BYTE minorVer=2,BYTE majorVer=2)
 7     {
 8         WSADATA wsaData;
 9         WORD sockVersion = MAKEWORD(minorVer,majorVer);
10         if(::WSAStartup(sockVersion,&wsaData)!=0)
11         {
12             exit(0);
13         }
14     }
15     ~CInitSock()
16     {
17         ::WSACleanup();
18     }
19 };

时间: 2024-08-07 20:45:30

winsock库的相关文章

初始化Winsock库

Winsock库对Windows的Socket编程有很好的支持,它提供了所有Socket相关的API函数.常用的Winsock库有1和2两个版本,流行应用程序使用的是Winsock2版本.其对应的动态链接库是WS2_32.dll,使用时需要包含Winsock2.h头文件,并要导入WS2_32.lib库文件.无论是使用哪种协议,无论是客户端还是服务端,在进行Socket编程之前首先应该对Winsock库(WS2_32.dll)进行初始化,完成初始化Winsock库工作的API函数是WSAStart

Winsock 编程流程

最近看了<Window程序设计>感觉在网络方面讲的不错,讲的很通俗易懂,与大家一同交流 转载请注明出处:http://blog.csdn.net/u010484477谢谢^_^ 使用 Winsock 编程的一般步骤是比较固定的. 1.Winsock 库的装入.初始化和释放 所有的 WinSock 函数都是从 WS2_32.DLL 库导出的,VC++在默认情况下并没有连接到该库,如果想使用 Winsock API,就必须包含相应的库文件. #pragma commment(lib, "

Winsock IO模型之select模型

之所以称其为select模型是因为它主要是使用select函数来管理I/O的.这个模型的设计源于UNIX系统,目的是允许那些想要避免在套接字调用上阻塞的应用程序有能力管理多个套接字. int select( int nfds,                                                 // 忽略,仅是为了与Berkeley套接字兼容 fd_set* readfds,                                  // 指向一个套接字集合,

Winsock基础编程

Winsock基础编程 Socket的英文原义是"孔"或"插座".作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其英文原意那样,像一个多孔插座.一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏

winsock教程- windows下的socket编程(c语言实现)

winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下代码片段只能运行在windows下.windows API中的socket编程部分叫做winsock. 你电脑上做出的任何网络通信背后基本上都有socket,它是一个网络的基本组成部分.举个例子说当你在浏览器键入www.google.com的时候,socket连接到google.com并且取回那个页面然后才

Winsock—I/O模型之选择模型(一)

Winsock中提供了一些I/O模型帮助应用程序以异步方式在一个或多个套接字上管理I/O. 这样的I/O模型有六种:阻塞(blocking)模型,选择(select)模型,WSAAsyncSelect模型,WSAEventSelect模型,重叠(overlapped)模型,完成端口(completion port)模型. 选择模型: 目的:允许想要避免在套接字调用上阻塞的应用程序有能力管理多个套接字. 一.select函数             select函数可以确定一个或者多个套接字的状态

winsock 收发广播包

?广播包的概念 广播包通常为了如下两个原因使用:1 一个应用程序希望在本地网络中找到一个资源,而应用程序对于该资源的地址又没有任何先验的知识. 2 一些重要的功能,例如路由要求把它们的信息发送给所有找到的邻机. 被广播信息的目的地址取决于这一信息将在何种网络上广播.Internet域中支持一个速记地址用于广播-INADDR_BROADCAST.由于使 用广播以前必须捆绑一个数据报套接口,所以所有收到的广播消息都带有发送者的地址和端口. 广播通信是无连接的通信,通信前不需要建立连接.不需要list

winsock编程学习笔记

以下部分转自博客http://blog.csdn.net/phunxm/article/details/5085869 套接字地址(sockaddr.sockaddr_in) 1 /* 2 * Structure used by kernel to store most addresses. 3 */ 4 struct sockaddr { 5 u_short sa_family;/* address family,AF_X */ 6 char sa_data[14];/* up to 14 b

Winsock API TCP/IP网络通信

通信流程如下: 1.Winsock库的装入.初始化 #pragma comment(lib,"WS2_32.lib").WSAStartup() 2.套接字的创建(服务器端是监听套接字) socket() 3.绑定套接字到指定的IP地址和端口 bind() 4.设置套接字进入监听状态(服务器端)+接受连接请求(服务器端) listen().accept() 5.请求与服务器连接 connect() 6.收发数据 send().recv() 7.关闭套接字,释放Winsock库 clos