QT和linux实现简易远程聊天工具

1.实现功能:

打开客户端有一个登陆窗口,有登陆,注册两种功能(bug肯定很多),登陆成功会在左边显示在线用户数量和列表,点击对应的用户名即可给该用户发送消息,客户端还可以记录聊天记录,如果将服务器运行于云服务器或有公网ip的linux上,即可实现任意两台电脑之间的消息通信。


2.使用方法:

解压chat.zip,将linuxserver文件夹复制到服务器上,在shell中执行make即可编译出chatserver,如果报sqlite3错误,那么需要安装sqlite3数据库,如果在ubuntu上运行,可以执行下面两条命令来安装sqlite3和库文件:

sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev

然后执行./chatserver即可运行服务器(后台运行),服务器会在当前目录下生成user_data数据库文件用来保存用户名和密码,客户端只有源代码文件,所以需要安装QT,我用的是QT5.4.2,安装好QT之后,打开chat.pro,然后编译运行,可以同时运行多个客户端来来测试。


3.实现原理:

程序分为服务器端和客户端,消息通过 TCP协议传输,服务器通过sqlite3保存用户名和密码,实现登录验证和注册功能,服务器通过多线程来实现并发服务,实现远程聊天的核心在于服务器能否正确的转发消息,服务器会在每个用户登录时记录下该用户名和对应的socket描述符,如果用户A向用户B发送消息,这时服务器已经了保存A和B的socket(登录时记录下的),发现目标用户名是B,那么会遍历记录下的用户名和socket,找到B对应的socket,然后发送出去,另外,服务器会在有用户登录和下线时给每一个在线用户发送在线用户数和用户名,好让客户端更新自己的在线用户列表。


4.效果图(客户端):

QT和linux实现简易远程聊天工具_第1张图片

QT和linux实现简易远程聊天工具_第2张图片

源代码下载地址:http://download.csdn.net/download/u014783685/9947429



你可能感兴趣的:(linux)