WSAStartup函数如何启动使用Winsock DLL?
WSAStartup函数如何启动使用Winsock DLL?
根据文件
此函数初始化WSADATA数据结构,但在套接字编程中,我们不会将WSDATA传递给任何函数,所以该程序如何知道Windows Sockets版本和其他详细信息? 例如在这段代码中 #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32") void Run(int argc,char* argv[]) { char* host = argc < 2 ? "" : argv[1]; struct hostent* entry = gethostbyname(host); if(entry) { struct in_addr* addr = (struct in_addr*) entry->h_addr; printf("IP Address: %sn",inet_ntoa(*addr)); } else printf("ERROR: Resolution failure.n"); } int main(int argc,char* argv[]) { WSADATA wsaData; if(WSAStartup(0x202,&wsaData) == 0) { Run(argc,argv); WSACleanup(); } else printf("ERROR: Initialization failure.n"); } 在这个例子中,我正在使用WSAStartup()函数初始化WSADATA数据结构,之后我不会在任何地方传递wsaData. 那么我的程序如何知道wsaData的细节呢? 谢谢.
WSAStartup有两个主要目的.
首先,它允许您指定要使用哪个版本的WinSock(您在示例中请求2.2).在它填充的WSADATA中,它将根据您的请求告诉您它提供哪些版本.它还填写了您不需要查看的其他一些信息,如果您不感兴趣.您再也不必将此WSADATA结构提交给WinSock,因为它纯粹用于为您提供有关WSAStartup请求的反馈. 它的第二件事就是设置你的应用程序需要使用套接字的所有“幕后的东西”. WinSock DLL文件被加载到你的进程中,它有很多的内部结构,需要为每个进程设置.这些结构从您隐藏,但它们对您所做的每个WinSock调用都是可见的. 由于需要为使用WinSock的每个进程设置这些结构,所以每个进程必须调用WSAStartup来初始化其自身内存空间中的结构,并且在使用套接字完成WSACleanup时再次将其重新打开. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows – Pycharm – 无法安装python打包工具
- windows-server-2012 – Windows Server 2012故障转移DHCP
- 如何在Windows用户的RDP会话中查找支持,我在哪里启动支持会
- windows-server-2012-r2 – 发布后安装问题 – 无法连接
- windows-xp – 如何通知内网用户不使用客户端应用程序?
- 如何确定接口是否是Windows PC上的物理LAN端口?
- 使用putty配套工具pscp实现windows向Linux传送文件[Linux]
- 如何在Windows上实现Android的倾斜效果?
- windows-7 – 如何在Windows 7中安装虚拟硬盘驱动器
- windows – RAID外置硬盘的最佳方法是什么?