zoukankan      html  css  js  c++  java
  • LiQ 即时通讯软件

    Project name: LiQ (LiQ 即时通讯软件)

    Creation date: 2020-2-26

    Update date: 2020-3-5 21:30

    Version: 1.0

    Complier: Qt-4.8.7 / Qt 5.9.9 (Clinet) and g++6.3.0 (Server)

    Language: c++11

    Author: I0gan (徐绿国)

    Plateform: Linux/Windows

    Project Indroduction:

    基于上一代Litalk做的第二个项目, 本来打算只是基于上一代修改一下UI界面,服务端框架还是用以前的, 做好客户端后,
    想想还是采用mysql自己的接口实现服务端, 服务端通讯全部采用Linux下的原生接口, 编译器为g++ 6.3.0, c++11开发.

    前一代Litalk 与Liq比较:

    Litalk:

    比较怪的UI界面, 整个通讯协议采用UDP进行传输, 发送包为明文字符串, 采用一些特殊符号进行分割字符串解包.很不安全, 而且效率低下, 使用Mysql来储存用户信息, 且储存用户的IP与端口, 每发一条消息就需要访问一次数据库, 效率大大折扣,不支持选着头像.
    服务端采用QT的接口, 依赖环境较高.

    LiQ:

    模仿QQ做的比较人性化的UI界面, 采用TCP进行安全加密登录, 登录验证成功后会从服务端获取一个checkCode, 用于安全修改信息的
    验证代码, 发送消息采用UDP发送, 使用链表储存用户的通讯地址,发送消息时候只需遍历链表即可获得用户的通讯地址, 这样效率就有所
    提高, 与上一代最大区别在于, 这个项目比较工程化, 采用二进制加密传输, 拥有数据结构,解包时更快, 采用mysql官方的c语言接口和原生Linux网络通讯接口函数, 效率上会有所提高, 运行环境不依赖于Qt, 使用多进程和多线程实现服务器高并发多处理,主要还是以多线程为主.

    目前功能: 模拟QQ界面, 能够注册用户, 用户能够修改固定的一些头像.且用户信息增多
    增强了服务端的稳固性, 安全性,高效性.

    让我来介绍一下它目前的功能:

    1. 注册登录帐号
    2. 开发中...

    使用:

    本项目基本很多宏定义全部在 liq.h(服务端) liqbase.h(客户端)
    里面有对应的很多信息和数据结构.修改相应的IP与端口即可.

    服务端:

    Linux平台. 可以从阿里云或者其他平台购买服务器,安装Mysql开发库: sudo apt install libmysql++-dev 还有g++6.0以上版本
    然后插入下面的表,使用make编译即可.

    客户端:

    Linux平台:

    我是采用QT5编译器开发的,想到以后在Windows上发布, 还是采用QT4的语法进行开发,希望能使用Qt5进行编译

    数据库表结构:

    create table users(uid int primary key auto_increment,account varchar(32),password varchar(256),nickname varchar(255),headImage varchar(255),email varchar(64), phoneNumber varchar(32), signature varchar(255),birth varchar(64), gender int,grade int,platform varchar(64),network int,lastlogin varchar(64));
    
    
    
    //nop number of person
    create table groups(gid int primary key auto_increment,account varchar(32),name varchar(255),headImage varchar(255),hacc varchar(32),files varchar(255),announcement varchar(255),nop int);
    
    
    create table user_friend(id int primary key auto_increment,uacc varchar(32),facc varchar(32),remark varchar(255), uid int, fid int);
    
    create table group_user(id int primary key auto_increment,gacc varchar(32),uacc varchar(32), gid int, uid int);
    
    create table pendtodo(id int(32) primary key auto_increment,cmd int,uacc varchar(32),facc varchar(32), gacc varchar(32), msg varchar(512), created_days int);
    
  • 相关阅读:
    【Python】小练习
    【C语言】利用二维数组输出成绩
    【C语言】多维数组
    【C语言】输入一个字符串,并对字符串中的偶数位置的字符按从小到大的顺序排序,奇数位置的字符不动,输出排序后的结果
    【C语言】一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果
    【C语言】移动指针
    Python中68个内置函数的总结
    【Python】变量命名习惯
    【Python】 基础语法
    【Python】 注释
  • 原文地址:https://www.cnblogs.com/lyxf/p/12423217.html
Copyright © 2011-2022 走看看