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外置硬盘的最佳方法是什么?
