【网络应用程序设计】实验一:本地机上的聊天室
个人博客:https://alive0103.github.io/
代码在GitHub:https://github.com/Alive0103/XDU-CS-lab
能点个Star就更好了,欢迎来逛逛哇~❣
主播写的刚够满足基本功能,多有不足,仅供参考,还请提PR指正,很高兴能帮到你
服务器端/客户端代码:GitHub指路
一、 实验内容
在linux平台上使用守护进程实现服务器,用于支持宿主机和虚拟机上的客户端进行聊天。客户端使用图形界面实现。
二、 实验准备
服务器端:运行在腾讯云Linux虚拟机上的守护进程
客户端:运行在本地主机的GUI程序
通信协议:TCP协议,使用8888端口,结合虚拟机IP为139.155.27
三、 服务器端实现
- 创建守护进程
- 写核心服务器代码
代码都在链接里了,目录结构可以通过脚本创建,自己问AI吧
四、 客户端实现(Qt)
-
界面设计
QTextBrowser 用于显示消息
QLineEdit 用于输入消息
QPushButton 发送按钮
在这里插入图片描述 -
配置网络通信(CMakeLists.txt)
-
写其他文件
五、启动
服务端:这两个选一个就行
(1)直接启动服务
记得先放行相应端口哦
1. # 进入编译目录
2. cd ~/chat_server/bin
3.
4. # 启动服务端(前台运行,查看实时输出)
5. ./chatserver
6.
7. # 后台启动(添加 & 符号)
8. ./chatserver &
(2)部署生产环境
(1)创建systemd服务文件
sudo nano /etc/systemd/system/chatserver.service
(2)chatserver.service
[Unit]
Description=Chat Server Daemon
After=network.target[Service]
Type=simple # 明确服务类型
User=lighthouse
Group=lighthouse
WorkingDirectory=/home/lighthouse/chat_server/bin
ExecStart=/home/lighthouse/chat_server/bin/chatserver
Restart=on-failure # 仅在失败时重启
RestartSec=5s # 重启间隔延长到5秒# 日志重定向到系统日志
# StandardOutput=syslog
# StandardError=syslog[Install]
WantedBy=multi-user.target
(3)启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now chatserver
客户端:本地 Qt编译运行
测试
连接服务器进行聊天
telnet <你的服务器地址> 8888
预备发送:
成功发送: