2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00
2026-01-23 08:39:07 +08:00

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

这些证书仅用于演示目的,不应在生产环境中使用

技术细节

核心类和接口

  • CSSLServerSSL服务器类
  • CSSLClientSSL客户端类
  • 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版本6.0.7
  • Visual Studio版本2022
  • 平台工具集v143
  • Windows SDK10.0

许可证

本演示程序遵循HP-Socket项目的Apache License 2.0许可证。

Description
No description provided
Readme 2.2 MiB
初版 Latest
2026-01-23 11:33:05 +08:00
Languages
C++ 99.7%
C 0.2%