从整体上看待这个技术
Windows编程基础知识
VA的安装以及常用快捷键
·快捷键
- ALT + G 调到定义
- ALT + SHIFT + F 查找所有引用
- ALT + 左箭头/右箭头:回退/前进
- 批量注释
Win32 窗口程序
1 | // 1. 掌握C++ 面向对象的思想, 2,理解消息机制 3.多态性 |
程序骨架
1 | int WinMain(){ |
窗口与句柄/窗口类对象
C++窗口类对象
CWnd:MFC库中用于表示窗口的基类。它封装了Windows API 中与窗口有关的操作,提供了一系列成员函数来创建、操作和管理窗口。
C++ 窗口类对象与窗口并不是一回事,它们之间惟一的关系是 C++ 窗口类对象内部定义了一个窗口句柄变量,保存了与这个 C++ 窗口类对象相关的那个窗口的句柄。窗口销毁时,与之对应的C++窗口类对象销毁与否,要看其生命周期是否结束。但C++窗口类对象销毁时,与之相关的窗口也将销毁。
生命周期 :窗口类对象周期 》 窗口 2、窗口类内部定义了m_wnd。
Windows网络编程
socket 概念
网络数据传输用的软件设备。它可以看作是网络通信的端点,应用程序可以通过 Socket 在网络上发送和接收数据,实现不同主机之间的通信。
Socket 的类型
- 流式 Socket(TCP Socket)
- 基于 TCP 协议,提供可靠的、面向连接的字节流服务。
- 数据传输过程中,TCP 协议会保证数据的完整性、顺序性和可靠性。
- 适用于需要可靠数据传输的应用,如文件传输、网页浏览等。
- 数据报 Socket(UDP Socket)
- 基于 UDP 协议,提供不可靠的、无连接的数据报服务。
- 数据传输过程中,UDP 协议不保证数据的完整性、顺序性和可靠性。
- 适用于对实时性要求较高,但对数据可靠性要求不高的应用,如视频流、在线游戏等。
C/S模式
面向连接与面向消息(TCP/UDP)
地址和端口
套接字类型与协议设置
SOCK_STREAM[流套接字] TCP
面向连接、可靠的数据传输 适合传输大量的数据,不支持广播、多播
SOCK_DGRAM[数据包套接字] UDP
无连接 支持广播、多播
SOCK_RAW[原始套接字]
可以读写内核没有处理的IP数据报
避开TCP/IP处理机制,被传送的数据报可以被直接传送给需要它的的应用程序
-引用头文件winsock2.h
- 导入ws2_32.lib库
- window下socket编程都要首先进行Winsock的初始化
函数
TCP套接字
服务器端代码
1 |
|
客户端代码
1 |
|
UDP套接字
1 | // 服务端 |
TCP和UDP的总结
UDP | TCP | |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输,不使用流量控制和拥塞控制 | 可靠传输,使用流量控制和拥塞控制 |
连接对象个数 | 支持一对一,一对多,多对一和多对多交互通信 | 只能是一对一通信 |
传输方式 | 面向报文 | 面向字节流 |
适用场景 | 适用于实时应用(IP电话、视频会议、直播等) | 适用于要求可靠传输的应用,例如文件传输 |