Qt C++实现局域网聊天
本人作为一个Qt c++萌新,需要一些实战项目练练手,我就使用qt实现了一个局域网聊天小程序,在同一个局域网内的两个进程通过同一个端口进行通信,目前只实现了聊天,文件传输需要后续项目实现。
一、准备
需要c++基础知识,以及qt的基础。这个程序是在Ubuntu环境下编写并测试的,当然Qt作为一个跨平台C++图形用户界面应用程序开发框架,其跨平台特性是非常优秀的。
二、开始
1、安装Qt5,目前官方最新的版本是Qt5.11.2,Qtcreator4.7.6。
选择qt-opensource-linux-x64-5.11.2.run,然后在下载目录下,./qt-opensource-linux-x64-5.11.2.run进行安装,需要创建账号,一般都会安装qt5和qtcreator,然后我安装的是qt5.11.1。qtcreator4.6.2
2、代码
(1)新建一个widget项目
(2)、添加一个c++类,并继承自QDialog,类似于这样。
这个类是实现的登录框,下图是类的细节。
先检查网络,如果连网,那么就可以登录。
lookupHost()函数,将结果给QhostInfo,此处是使用的百度地址。
①okBtnClicked():
(3)在widget类里面实现聊天。
①这是主界面
②类的细节
③ 代码:
这是在构造函数中的connect,upd使用bind之前登录使用的port,使用shareAddress和ReuseAddressHint实现地址和端口的重用。
这是用户进入之后,用户列表添加用户,使用的是QTableWidgetItem
这是用户离开处理,通过退出按钮来触发,如果当前用户大于等于2才退出。
下图是发送和接收函数,
三、最后
最终运行效果如图
登录后进行聊天
然后是退出
四、结语
大致就这样了,这是一个基于UDP的聊天程序,本来是要实现文件传输的,但文件传输应当使用TCP,所以放在后续项目实现。