目录
任务
聊天工具的设计与实现
要求
编写一个基于Linux操作系统+ C语言的聊天应用程序,涉及的知识:多进程、进程通信、Qt、MySQL等知识。
基本功能
两个主机端(服务器和客户端)进行图形化界面通信;
一、任务及要求分析
编写一个基于Linux操作系统+ C语言的聊天应用程序,涉及的知识:多进程、进程通信、Qt、MySQL等知识。
- 创建两个主机端,分别为服务器Server和客户端Client,两个主机可以进行图形化界面通信。
- 使用mysql创建数据库ly,创建两个表user和chat,分别用于存储用户信息和通信内容信息。
- 使用QT实现图形化界面,通过QT Designer设计窗口。
二、实验过程
2.1 程序框架设计
2.1.1源文件导图
创建两个项目,分别人Client和Server,创建相关文件。
2.2.2 Server和Client窗口视图及属性介绍
使用QT自带的ui设计模块,按照如下图进行设计。
xx.ui文件在运行时,会自动创建ui_xx.h头文件。
2.2 数据库准备
在终端打开mysql,创建数据库ly,创建表user用于存储用户信息,创建表chat用于存储通信内容及相关信息。
为表user添加新用户:用户名为ly,密码为1234。
表chat为空。
2.3注册及登录
2.3.1 注册
输入用户名和密码,点击注册按钮,进行用户注册。注册成功显示“注册成功!”,否则显示“注册失败”。
注册成功后,在终端打开mysql,查询user表,新增一条记录。
2.3.2登录
输入用户名和密码,用户存在且密码正确显示“登录成功!”,否则显示“登录失败!”。
登录后,再次登录会显示“已登录”。
2.3.3 通信
在各自输入区输入信息后,点击发送,会同时显示到两个窗口的通信内容记录框内。
同时,打开数据库查看chat表,新增记录。
2.3.4 关闭服务器,断开连接
三、调试过程中出现的问题及相应解决办法
问题一:客户端无法连接到服务器。
解决办法:在Server.pro和Client.pro文件中添加语句:
QT += network sql
问题二:通信内容不能是中文,如果输入中文会乱码。
解决方法:在数据传输过程中,采用utf-8编码。
问题三:使用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界面下,选中控件后右边属性框的前列,修改名称后,重新构建,发现构建成功。