编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

时间:2024-04-07 22:01:53

目录

一、任务及要求分析

二、实验过程

2.1 程序框架设计

2.1.1源文件导图

2.2.2 Server和Client窗口视图及属性介绍

2.2 数据库准备

2.3注册及登录

2.3.1 注册

2.3.2登录

2.3.3 通信

2.3.4 关闭服务器,断开连接

三、调试过程中出现的问题及相应解决办法

四、程序源码及其注释

4.1 Server.h

4.2 Server.cpp

4.3 main.cpp

4.4 client.h

4.5 client.cpp

4.6 main.cpp


任务

聊天工具的设计与实现

要求

编写一个基于Linux操作系统+ C语言的聊天应用程序,涉及的知识:多进程、进程通信、Qt、MySQL等知识。

基本功能

两个主机端(服务器和客户端)进行图形化界面通信;

                            一、任务及要求分析

编写一个基于Linux操作系统+ C语言的聊天应用程序,涉及的知识:多进程、进程通信、Qt、MySQL等知识。

  1. 创建两个主机端,分别为服务器Server和客户端Client,两个主机可以进行图形化界面通信。
  2. 使用mysql创建数据库ly,创建两个表user和chat,分别用于存储用户信息和通信内容信息。
  3. 使用QT实现图形化界面,通过QT Designer设计窗口。

 

                            二、实验过程

2.1 程序框架设计

2.1.1源文件导图

创建两个项目,分别人Client和Server,创建相关文件。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

2.2.2 Server和Client窗口视图及属性介绍

使用QT自带的ui设计模块,按照如下图进行设计。

xx.ui文件在运行时,会自动创建ui_xx.h头文件。

 

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

 

2.2 数据库准备

在终端打开mysql,创建数据库ly,创建表user用于存储用户信息,创建表chat用于存储通信内容及相关信息。

为表user添加新用户:用户名为ly,密码为1234。

表chat为空。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

 

2.3注册及登录

2.3.1 注册

输入用户名和密码,点击注册按钮,进行用户注册。注册成功显示“注册成功!”,否则显示“注册失败”。

注册成功后,在终端打开mysql,查询user表,新增一条记录。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

2.3.2登录

输入用户名和密码,用户存在且密码正确显示“登录成功!”,否则显示“登录失败!”。

登录后,再次登录会显示“已登录”。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

 

2.3.3 通信

在各自输入区输入信息后,点击发送,会同时显示到两个窗口的通信内容记录框内。

 

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

 同时,打开数据库查看chat表,新增记录。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

2.3.4 关闭服务器,断开连接

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

 


               三、调试过程中出现的问题及相应解决办法

问题一:客户端无法连接到服务器。

解决办法:在Server.pro和Client.pro文件中添加语句:

                                     QT += network sql

 

问题二:通信内容不能是中文,如果输入中文会乱码。

解决方法:在数据传输过程中,采用utf-8编码。

编写一个基于Linux操作系统+C语言的聊天应用程序,使用QT实现两个主机端(服务器和客户端)进行图形化界面通信。

 

问题三:使用QT连接mysql时,连接不上,显示错误信息“...not load”。Mysql配置有问题,QT版本过高(5.9)也会导致无法连接。

解决方法:重新配置mysql,下载低版本QT(5.6)。

 

问题四:安装完mysql后,第一次运行时,会提示输入密码,但密码是随机生成的,根本不知道密码,无法进入mysql。

解决方法:打开/etc/my.cnf文件,加上一行代码skip-grant-tables,表示无密码运行mysql。然后再直接用mysql -uroot登录,发现登录成功。然后执行sql语句修改密码 update user set Password='密码' where User='root'。最后把之前加的那段代码删掉,就可以使用自己的密码登录了。

 

问题五:编写完代码后成功运行,然后我想改一下文件名,改完之后,程序不能运行。报错:invalid use of incomplete type 'class Ui::Server'ui(new Ui:: Server)。

解决方法:在其对应的ui文件中,整个界面的ObjectName没有进行更改,打开其对应的ui文件,将其ObjectName更改即可。ObjectName即是在Designer界面下,选中控件后右边属性框的前列,修改名称后,重新构建,发现构建成功。


                                 四、程序源码及其注释

4.1 Server.h

4.2 Server.cpp

4.3 main.cpp

4.4 client.h

4.5 client.cpp

4.6 main.cpp