winsock 常用数据结构
来源:互联网 发布:金蝶java面试题 编辑:程序博客网 时间:2024/05/22 10:56
在VC的头文件winsock.h和winsock2.h中定义了许多常数、变量类型和数据结构。现介绍一些常见的。
1)WSAData:动态链接库关联的数据结构(winsock2.h中的定义,winsock.h中的定义类似)
#defineWSADESCRIPTION_LEN 256
#defineWSASYS_STATUS_LEN 128
typedef struct WSAData {
WORD wVersion; //winsock版本
WORD wHighVersion; //系统可以支持的最高版本
char szDescription[WSADESCRIPTION_LEN+1]; //可能需要的winsock信息(最多256个的非终止字符串)
char szSystemStatus[WSASYS_STATUS_LEN+1]; //状态和配置信息;
unsignedshort iMaxSockets; //预留后向兼容的,版本2不用的
unsignedshort iMaxUdpDg; //同上,预留用于后向兼容
charFAR * lpVendorInfo; //同上
}WSADATA, FAR * LPWSADATA;
2)sockaddr:用于说明网络寻址信息的地址结构:
struct sockaddr {
u_short sa_family; // address family , AF_INET表示套接字处于Internet域
char sa_data[14]; //* up to 14 bytes of direct address
};
3) sockaddr_in
struct sockaddr_in {
short sin_family;
u_short sin_port; //两个字节服务端口地址,缺省为0时自动分配,1024~5000之间的数值,网络字节顺序
struct in_addr sin_addr; //四字节IP地址,无符号类型
char sin_zero[8]; //与sockaddr结构sa_data字段的长度保留一致,只充当填充项的作用
};
4) _SOCKET_ADDRESS
Typedef struct _SOCKET_ADDRESS{
LPSOCKADDRlpSockaddr //指向套接字地址
INTiSockaddrLength //套接字地址长度(字节)
}SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS
5) in_addr
typedefstruct in_addr {
union{
struct{
UCHARs_b1,s_b2,s_b3,s_b4;
}S_un_b;
struct{
USHORTs_w1,s_w2;
}S_un_w;
ULONGS_addr;
}S_un;
#defines_addr S_un.S_addr // can be used for most tcp & ipcode
#defines_host S_un.S_un_b.s_b2 // host on imp
#defines_net S_un.S_un_b.s_b1 // network
#defines_imp S_un.S_un_w.s_w2 // imp #define s_impno S_un.S_un_b.s_b4//imp #
#defines_lh S_un.S_un_b.s_b3 // logical host
}IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;
6) hosten 用于存放或返回主机信息的hosten结构:
struct hostent {
char FAR * h_name; // official name of host,域名系统可返回应答
char FAR * FAR * h_aliases; // alias list 多名数组
short h_addrtype; //host address type 返回的地址类型
short h_length; // length of address 返回的地址长度(字节)
char FAR * FAR * h_addr_list; // list of addresses 用于主机网络字节顺序的地址表 #define h_addr h_addr_list[0] //address, for backward compat
};
7) servent用于存放或返回给定服务名字的服务名和服务号的servent结构:
struct servent {
char FAR * s_name; //officialservice name 服务的官方名字
char FAR * FAR * s_aliases; // alias list 非空字符的别名数组
short s_port; //port # 网络顺序的服务对应的端口号
char FAR * s_proto; // protocol to use 服务应用的协议名
};
8) protoent用于存放或返回给定协议信息的protoent结构:
struct protoent {
char FAR * p_name; //officialprotocol name 协议的官方名字
char FAR * FAR * p_aliases; // alias list 非空字符的别名数组
short p_proto; // protocol # 主机顺序的协议号
};
9) fd_seand timeval 用于select()函数的套接字分类fd_set和timeval结构:
typedefstruct fd_set {
u_int fd_count; // how many are SET?集合中套接字个数
SOCKET fd_array[FD_SETSIZE]; // an array of SOCKETs 在集合中的套接字数组,其中FD_SETSIZE=64
}fd_set;
structtimeval {
long tv_sec; //seconds 等待时间秒
long tv_usec; //and microseconds 等待时间微秒
};
10) WSABUF 允许对数据缓冲区创建和操作的WSABUF结构:
typedefstruct _WSABUF {
u_long len; // the length of the buffer,字节为单位
charFAR * buf; // the pointer to the buffer
}WSABUF, FAR * LPWSABUF;
11) WSANETWORKEVENTS 存储套接字网络事件内部信息
Typedef struct _WSANETWORKEVENTS {
long lNetworkEvents;
int iErrorCode[FD_MAX_EVENTS];
}WSANETWORKEVENTS, FAR * LPWSANETWORKEVENTS;
lNetworkEvents 参数:指定了一个值,对应于套接字上发生的所有网络事件类型(FD_READ、FD_WRITE 等)。注意:一个事件进入传信状态时,可能会同时发生多个网络事件类型。例如,一个繁忙的服务器应用可能同时收到 FD_READ 和 FD_WRITE 通知。
iErrorCode 参数:指定的是一个错误代码数组,同 lNetworkEvents 中的事件关联在一起。针对每个网络事件类型,都存在着一个特殊的事件索引,名字与事件类型的名字类似,只是要在事件名字后面添加一个“_BIT”后缀字串即可。例如,对 FD_READ 事件类型来说,iErrorCode 数组的索引标识符便是 FD_READ_BIT。
- winsock 常用数据结构
- WinSock数据结构
- WinSock API 常用函数
- winsock脚本常用函数
- loadrunner- winsock 常用函数
- winsock 常用函数介绍
- Winsock
- Winsock
- winsock
- WinSock
- WINSOCK
- Winsock
- WinSock
- WInsock
- winsock
- winsock
- winsock
- winsock
- Xcode_自定义代码块
- starring V6平台开发接出点流程
- QT5串口编写
- leetccode 53. Maximum Subarray
- java设计模式(十六)——责任链模式(Chain of Responsibility)
- winsock 常用数据结构
- Django--4--views.py详解
- C#设计模式(1)——单例模式
- Oracle 11g服务器安装详细步骤——图文教程
- CentOS 安装 微软雅黑字体
- SpringBoot整合jersey
- MS-SSTR Smooth Streaming 协议
- WebSocket长连接
- JDK切换方法(不用卸载原安装的JDK)