协议基础
协议是计算机或通信系统中,不同实体之间交互时共同遵循的规则和标准。它定义了数据格式、传输方式、错误处理等机制,确保通信双方能正确理解彼此的信息。
核心要素
- 语法(Syntax):数据的结构或格式,例如报文排列、字段长度顺序。
- 语义(Semantics):数据的含义及操作逻辑,解释字段代表的动作。
- 同步(Timing/Synchronization):通信的顺序控制,如发送和响应的时序。
常见协议分类
| 类别 | 协议示例 | 作用 |
|---|---|---|
| 网络通信 | TCP/IP、HTTP、FTP | 实现数据传输和网络互联 |
| 安全协议 | SSL/TLS、SSH、HTTPS | 加密通信和身份验证 |
| 应用层协议 | SMTP、DNS | 支持特定应用功能 |
| 硬件协议 | USB、Bluetooth | 硬件设备间的交互规范 |
UDP 协议详解
UDP(User Datagram Protocol) 是一种无连接的传输层协议,位于 TCP/IP 模型的传输层。它以最小化的协议机制提供高效的数据传输服务。
| 特性 | 说明 |
|---|---|
| 无连接 | 通信前无需建立连接,直接发送数据 |
| 不可靠传输 | 不保证数据顺序、不重传丢失报文 |
| 无状态 | 发送方和接收方不维护连接状态 |
| 头部开销小 | 固定 8 字节头部(TCP 至少 20 字节) |
| 支持广播/多播 | 可向多个主机同时发送数据 |
UDP 通信实现
由于 UDP 通过数据报在网络中传输,创建套接字时需指定为数据报类型。服务器端主要包含初始化和启动两个阶段,启动后通常进入死循环以持续接收外部数据。为了处理网络字节序和本地字节序的转换,我们将 IP 地址和端口号封装成类 InetAddr,提升代码可读性。
注意:这里的 LOG 类是之前章节封装好的,可直接复用。
服务器端
公共头文件 Comm.hpp
#pragma once
#include<iostream>
#define Die(code) exit(code)
#define CONV(v) (struct sockaddr*)(v)
{ USAGE_ERR, SOCKET_ERR, BIND_ERR };


