基本操作

目录

工程文件重定向(非必须)

  • 输出目录重定向
    • $$(Solution)../result/$(Platform)/$(Configuration)/$
  • 中间目录重定向
    • $$(Solution)../temp/$(Platform)/$(Configuration)/$(ProjectName)/$

头文件

  • Windows.h
  • WinSock2.h
    • 需要进行宏定义,或者将 WinSock2.h 放在 Windows.h 之前定义
      • #define WIN32_LEAN_AND_MEAN

函数部分

  • 启动函数WSAStartup()

    • 包含所需要的静态链接库

      • #pragma comment(lib, "ws2_32.lib")

        该写法为显示声明所需要的静态库,在 window 系统下有效,其他平台上不支持

      • 在项目属性中包含依赖项ws2_32.lib

    • 参数 1:WORD的版本号

      • 使用WORD ver = MAKEWORD(2, 2);创建版本号

        makeword 是将两个 byte 型合并成一个 word 型,一个在高 8 位(b),一个在低 8 位(a)
        makelparam、makelong 和 makewparam 都是一样的,将两个 word 型合并成一个 dword 型。一个在高 16 位,一个在低 16 位
        delphi:word((byte(a)) or (word(byte(b))) shl 8);
        比如 a=2;b=1
        2 的二进制是 00000010 1 的二进制为 00000001 B 是表示高 8 位,A 表示低 8 位 合并起来就是
        100000010
        MAKEWORD(1,1)和 MAKEWORD(2,2)的区别在于,前者只能一次接收一次,不能马上发送,而后者能。

    • 参数 2:WSADATA类型的数据指针

      • 创建 WSADATA 类型的变量

      WSADATA 结构被用来保存函数 WSAStartup 返回的 Windows Sockets 初始化信息

  • 关闭函数WSACleanup()

代码展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <WinSock2.h>
#include <windows.h>

#pragma comment(lib, "ws2_32.lib")

int main() {
WORD ver = MAKEWORD(2, 2);
WSADATA wsa;
WSAStartup(ver, &wsa);


WSACleanup();
return 0;
}