创建基本 Winsock 应用程序
-
创建一个新的空项目。
-
将一个空的 C++ 源文件添加到项目中。
-
确保构建环境引用 Microsoft Windows 软件开发工具包 (SDK) 或更早版本的平台软件开发工具包 (SDK) 的 Include、Lib 和 Src 目录。
-
确保构建环境链接到 Winsock 库文件 Ws2_32.lib。使用 Winsock 的应用程序必须与 Ws2_32.lib 库文件链接。#pragma 注释向链接器指示需要Ws2_32.lib文件。
-
开始编写 Winsock 应用程序。通过包含 Winsock 2 头文件来使用 Winsock API。Winsock2.h头文件包含大部分 Winsock 函数、结构和定义。Ws2tcpip.h头文件包含在 WinSock 2 协议特定附件文档中引入的 TCP/IP 定义,其中包括用于检索 IP 地址的更新函数和结构。
笔记
Stdio.h 用于标准输入和输出,特别是printf()函数。
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#pragma comment(lib, "Ws2_32.lib")
int main() {
return 0;
}
笔记
如果应用程序使用 IP Helper API,则需要 Iphlpapi.h 头文件。当需要Iphlpapi.h头文件时,Winsock2.h头文件的#include 行应放在Iphlpapi.h头文件的#include 行之前。
Winsock2.h头文件内部包含来自Windows.h头文件的核心元素,因此Winsock 应用程序中的Windows.h头文件通常没有#include 行。如果Windows.h头文件需要 #include 行,则应以 #define WIN32_LEAN_AND_MEAN 宏开头。由于历史原因,Windows.h标头默认包含 Windows Sockets 1.1 的Winsock.h标头文件。Winsock.h头文件中的声明将与 Windows Sockets 2.0 所需的 Winsock2.h 头文件中的声明冲突。WIN32_LEAN_AND_MEAN 宏可防止Winsock.h不会被Windows.h标头包含。下面显示了一个示例。
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <stdio.h>
#pragma comment(lib, "Ws2_32.lib")
int main() {
return 0;
}
下一步:初始化 Winsock