Skip to content

HGSpace-Studio/Duckchat

Repository files navigation

DuckChat - 跨平台 C 语言版本

这是一个使用纯 C 语言实现的跨平台聊天应用,支持 Windows 和 Linux。

功能特性

  • 跨平台支持(Windows/Linux)
  • 客户端:GUI 界面(基于 Dear ImGui + GLFW)
  • 服务端:控制台应用
  • TCP 网络通信
  • 实时消息传输

依赖项

Windows

  1. MinGW-w64Visual Studio 2019+
  2. CMake 3.10+
  3. Git(用于自动下载依赖)

Linux (Ubuntu/Debian)

sudo apt update
sudo apt install -y build-essential cmake git libgl1-mesa-dev libglfw3-dev libglew-dev

编译方法

方法 1:使用 CMake(推荐)

# 进入项目目录
cd duckchat

# 创建构建目录
mkdir build
cd build

# 配置项目
cmake ..

# 编译
cmake --build .

# 或者使用 make
# make

编译完成后:

  • build/client - 客户端程序
  • build/server - 服务端程序

方法 2:使用 WSL 交叉编译 Windows 版本

# 在 WSL 中安装交叉编译工具
sudo apt install -y mingw-w64 cmake git

# 交叉编译
mkdir build-win
cd build-win
cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw.cmake
make

方法 3:直接编译(仅服务端)

Linux:

gcc -o server server.c -lpthread

Windows (MinGW):

gcc -o server.exe server.c -lws2_32

使用方法

运行服务端

# Linux/Mac
./server

# Windows
server.exe

# 指定端口(可选)
./server 9999

运行客户端

# Linux/Mac
./client

# Windows
client.exe

使用步骤

  1. 先启动服务端
  2. 启动一个或多个客户端
  3. 在客户端中输入:
    • 服务器 IP 地址(默认:127.0.0.1)
    • 端口号(默认:8888)
    • 用户名
  4. 点击 "Connect" 连接
  5. 在消息框中输入消息并发送

项目结构

duckchat/
├── client.c          # 客户端源代码(C 语言 + Dear ImGui GUI)
├── server.c          # 服务端源代码(C 语言控制台)
├── CMakeLists.txt    # CMake 构建配置
├── README.md         # 说明文档
├── build.sh          # Linux 编译脚本
└── build.bat         # Windows 编译脚本

技术栈

  • 语言: C11
  • GUI 库: Dear ImGui (即时模式 GUI)
  • 窗口库: GLFW
  • 图形库: OpenGL 3.0+
  • 网络: BSD Sockets (跨平台)

与 Qt 版本的区别

特性 Qt 版本 C 语言版本
编程语言 C++ C
GUI 框架 Qt Widgets Dear ImGui
依赖大小 ~500MB ~50MB
编译时间 较长 较短
跨平台
静态链接 困难 容易

故障排除

Windows 常见问题

错误:找不到 ws2_32.lib

  • 确保使用 MinGW 或 Visual Studio 编译

错误:缺少 OpenGL

  • 更新显卡驱动
  • 安装 GLFW: choco install glfw

Linux 常见问题

错误:找不到 glfw3.h

sudo apt install libglfw3-dev

错误:找不到 GL/gl.h

sudo apt install libgl1-mesa-dev

许可证

MIT License

致谢

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors