当前位置: 首页 > news >正文

【网络应用程序设计】实验一:本地机上的聊天室

个人博客:https://alive0103.github.io/
代码在GitHub:https://github.com/Alive0103/XDU-CS-lab
能点个Star就更好了,欢迎来逛逛哇~❣

主播写的刚够满足基本功能,多有不足,仅供参考,还请提PR指正,很高兴能帮到你

服务器端/客户端代码:GitHub指路

一、 实验内容

在linux平台上使用守护进程实现服务器,用于支持宿主机和虚拟机上的客户端进行聊天。客户端使用图形界面实现。

二、 实验准备

服务器端:运行在腾讯云Linux虚拟机上的守护进程
客户端:运行在本地主机的GUI程序
通信协议:TCP协议,使用8888端口,结合虚拟机IP为139.155.27

三、 服务器端实现

  1. 创建守护进程
  2. 写核心服务器代码
    代码都在链接里了,目录结构可以通过脚本创建,自己问AI吧

四、 客户端实现(Qt)

  1. 界面设计
    QTextBrowser 用于显示消息
    QLineEdit 用于输入消息
    QPushButton 发送按钮
    在这里插入图片描述

  2. 配置网络通信(CMakeLists.txt)

  3. 写其他文件

五、启动

服务端:这两个选一个就行
(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
预备发送:
在这里插入图片描述
成功发送:
在这里插入图片描述

http://www.xdnf.cn/news/91297.html

相关文章:

  • 1.HTTP协议与RESTful设计
  • char32_t、char16_t、wchar_t 用于 c++ 语言里存储 unicode 编码的字符,给出它们的具体定义
  • 【武汉理工大学第四届ACM校赛】copy
  • 凡清亮相第十五届北京国际电影节电影嘉年华,用音乐致敬青春与梦想
  • 调和平均数通俗易懂的解释以及为什么这样定义,有什么用
  • 《 C++ 点滴漫谈: 三十四 》从重复到泛型,C++ 函数模板的诞生之路
  • 客户对质量不满意,如何快速响应?
  • ycsb性能测试的优缺点
  • GRS认证有什么要求?GRS认证要审核多久,GRS认证流程
  • 旅游行业路线预定定制旅游小程序开发
  • vivado XMP使用
  • 2023蓝帽杯初赛内存取证-1
  • ROS2 安装详细教程,Ubuntu 22.04.5 LTS 64 位 操作系统
  • Nacos 是如何实现 Raft 协议的?Raft 协议的关键组件和流程是什么?
  • Java基础复习(JavaSE进阶)第八章 多线程
  • C++静态与动态联编区别解析
  • Vue3简介
  • TDengine 查询引擎设计
  • 滑动模式观测器(Sliding mode observer)
  • 机器视觉的液晶屏点胶应用
  • 飞搭系列 | 组件增加标记,提升用户体验
  • android开发-BuildConfig无法生成
  • [Java · 铢积寸累] 数据结构 — 二维数组 - 概念引入
  • 潮玩+智显 |电子价签演绎潮玩信息智显的百变状态
  • Linux系统之----进程的概念
  • GpuGeek:以弹性算力与全栈服务赋能产业智能升级
  • 继承相关知识
  • Kinibi-610a:面向芯片厂商与设备制造商的TEE升级详解
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.25)
  • ctfshow web类 2-7题