# TestEcho-SSL-Console 演示程序 这是一个基于HP-Socket的SSL服务器和客户端控制台演示程序。 ## 项目结构 ``` TestEcho-SSL-Console/ ├── Server/ # SSL服务器控制台程序 │ ├── main.cpp │ └── Server.vcxproj ├── Client/ # SSL客户端控制台程序 │ ├── main.cpp │ └── Client.vcxproj ├── TestEcho-SSL-Console.sln # VS2022解决方案文件 └── README.md # 本文件 ``` ## 功能特性 ### 服务器端 (Server) - 监听端口:5555 - 绑定地址:0.0.0.0(所有网络接口) - SSL/TLS加密通信 - 接收客户端消息并在控制台显示 - 自动向客户端发送响应消息 - 按 'Q' 键停止服务器 ### 客户端 (Client) - 连接到:127.0.0.1:5555 - SSL/TLS加密通信 - 交互式命令界面 - 命令: - **1** - 发送 "hello" 消息到服务器 - **Q** - 断开连接并退出 ## 编译和运行 ### 前提条件 - Visual Studio 2022 - HP-Socket源码库 - OpenSSL库(已包含在 `Windows/Dependent/openssl/` 目录中) ### 编译步骤 1. 打开 Visual Studio 2022 2. 打开解决方案文件:`TestEcho-SSL-Console.sln` 3. 选择配置(Debug 或 Release)和平台(x86 或 x64) 4. 生成解决方案(Ctrl+Shift+B) 编译成功后,可执行文件将生成在: - `Windows/Demo/Debug/x64/` 或 `Windows/Demo/Release/x64/`(64位) - `Windows/Demo/Debug/x86/` 或 `Windows/Demo/Release/x86/`(32位) ### 运行步骤 #### 方式1:使用命令行 1. **启动服务器** ``` cd Windows\Demo\Debug\x64 TestEcho-SSL-Console-Server.exe ``` 2. **启动客户端**(在另一个命令行窗口) ``` cd Windows\Demo\Debug\x64 TestEcho-SSL-Console-Client.exe ``` #### 方式2:从Visual Studio运行 1. 右键点击 Server 项目 -> 设为启动项目 2. 按 F5 或 Ctrl+F5 运行服务器 3. 右键点击 Client 项目 -> 设为启动项目 4. 按 F5 或 Ctrl+F5 运行客户端 ## 使用示例 ### 服务器端输出示例: ``` ======================================== HP-Socket SSL Server 控制台演示程序 ======================================== [服务器] 正在初始化SSL环境... [服务器] SSL环境初始化成功 [服务器] 正在启动服务器... [服务器] 准备监听: 0.0.0.0:5555 [服务器] 服务器启动成功,监听端口: 5555 [服务器] 按 'Q' 键停止服务器... [服务器] 客户端连接: ID=1, 地址=127.0.0.1:12345 [服务器] SSL握手完成: ID=1 [服务器] 接收到消息: ID=1, 内容="hello from client" [服务器] 发送响应: "hello!" ``` ### 客户端输出示例: ``` ======================================== HP-Socket SSL Client 控制台演示程序 ======================================== [客户端] 正在初始化SSL环境... [客户端] SSL环境初始化成功 [客户端] 正在连接服务器 127.0.0.1:5555 ... [客户端] 连接成功: 本地地址=127.0.0.1:12345 [客户端] SSL握手完成 [客户端] 已连接到服务器,可以开始发送消息 ---------------------------------------- 命令菜单: 1 - 发送 'hello' 到服务器 Q - 断开连接并退出 ---------------------------------------- 请输入命令: 1 [客户端] 发送消息: "hello" [客户端] 收到服务器响应: "hello!" ``` ## SSL证书说明 本程序使用的SSL证书已经内嵌在代码中(来自 `TestEcho-SSL` 示例项目): - 服务器证书:`server.cer` / `server.key` - 客户端证书:`client.cer` / `client.key` - CA证书:`ca.crt` - 密钥密码:123456 这些证书仅用于演示目的,**不应在生产环境中使用**。 ## 技术细节 ### 核心类和接口 - **CSSLServer**:SSL服务器类 - **CSSLClient**:SSL客户端类 - **CTcpServerListener**:服务器事件监听器接口 - **CTcpClientListener**:客户端事件监听器接口 ### SSL配置 - **服务器验证模式**:SSL_VM_PEER | SSL_VM_FAIL_IF_NO_PEER_CERT - **客户端验证模式**:SSL_VM_PEER - **加密方式**:使用内存中的PEM格式证书 ### 依赖库 - `crypt32.lib` - Windows加密API - `libssl.lib` - OpenSSL SSL/TLS库 - `libcrypto.lib` - OpenSSL加密库 - `ws2_32.lib` - Windows套接字库 ## 故障排除 ### 编译错误 1. **找不到OpenSSL头文件** - 检查 `Windows/Dependent/openssl/v143/` 目录是否存在 - 确认项目属性中的包含目录设置正确 2. **链接错误:找不到libssl.lib** - 检查 `Windows/Dependent/openssl/v143/[x86|x64]/lib/` 目录 - 确认项目属性中的库目录设置正确 ### 运行时错误 1. **服务器启动失败:端口已被占用** - 检查端口5555是否被其他程序占用 - 使用 `netstat -ano | findstr 5555` 查看端口占用情况 2. **客户端连接失败** - 确保服务器已经启动 - 检查防火墙设置 - 确认服务器监听的地址和端口正确 3. **SSL握手失败** - 检查证书配置是否正确 - 确认OpenSSL DLL文件在系统路径中 ## 相关链接 - HP-Socket项目:https://github.com/ldcsaa/HP-Socket - OpenSSL官网:https://www.openssl.org/ ## 版本信息 - HP-Socket版本:6.0.7 - Visual Studio版本:2022 - 平台工具集:v143 - Windows SDK:10.0 ## 许可证 本演示程序遵循HP-Socket项目的Apache License 2.0许可证。