目录
1.引言 1
1.1编写目的 1
1.2参考资料 1
2总体设计 1
2.1 功能要求 1
2.2运行环境 1
2.3基本设计概念和处理流程 2
部分二:多个peer间相互发送消息 4
2.4流程图 9
2.5结构 10
3.接口设计 10
3.1内部接口 10
3.2外部接口 10
4运行设计 10
4.1运行模块组合 10
4.2运行控制 10
4.3运行时间 10
5系统数据结构设计 11
1.引言
1.1编写目的
设计一个P2P聊天软件,由多个聊天客户端和一个中心服务器组成。各个聊天客户端可以两两相互发送消息。
1.2参考资料
《信息技术提高班培养计划V5.1》
《软件工程——实践与理论》
《软件工程概论》
2总体设计
2.1 功能要求
1.用户界面(GUI)可自行设计,主要为用户提供方便。
2.用户界面要及时的对用户的操作做出反应。
3.要实现一个用户可以和多个用户同时进行聊天。
4.实现平台Linux或Windows,编程语言C/C++,JAVA。
2.2运行环境http://www.biyezuopin.vip/onews.asp?id=16977
服务器:CPU:1G;内存:4G;硬盘:15G
支持系统:Ubuntu16.0.4
2.3基本设计概念和处理流程
部分一:P2P聊天中各个成员管理。每个成员称为一个peer,要有一个中心的服务处理peer的登记和对已经登记的peer进行更新。
步骤1:一个peer选择一个名字,通过登记界面进行登记。

/** File: user.h* brief:* 保存用户信息的类* Author: gyz* Email: mni_gyz@163.com* Last Modified: Saturday, 13th October 2018 1:46:36 pm* -----* Copyright 2018 - 2018*/
#ifndef __USER_H__
#define __USER_H__#include <sys/socket.h>
#include <string>
#include "Define.h"
#include "Data.h"class user
{private:data data_[MAX_NUM];int len; // 记录当前data_长度 已注册人数public:user();~user();int getLen();data getData(int i);data *addNewData(struct sockaddr sock, char *buf);uint16_t getPort(data d);char *getIpAddr(data d);uint16_t getPortBySockaddrin(struct sockaddr_in sockin);char *getIpAddrBySockaddrin(struct sockaddr_in sockin);void getName(data d, char *name);void offline(data *d);
};#endif //__USER_H__
















基于QT实现的P2P聊天系统相关推荐

  1. 基于Qt的P2P局域网聊天及文件传送软件设计

    基于Qt的P2P局域网聊天及文件传送软件设计 zouxy09@qq.com http://blog.csdn.net/zouxy09         这是我的<通信网络>的课程设计作业,之 ...

  2. 基于QT的一款P2P共享文件系统

    软件下载地址 : 基于QT的一款P2P共享文件系统 Github地址 软件环境: QT5.4.x, mysql5 准备工作:需要启动mysql服务,并建立ShareFile数据库,建如下两张数据表: ...

  3. 基于QT Creator 5.14的仿QQ聊天系统【UDP通讯】

    一.使用工具 本次整个项目的开发基于Qt Creator 5.14.2进行的开发与调试,主要通信功能采用UDPSocket完成,是我学习Qt过程中联系的小案例,过程中遇到的bug和完整代码会尽量展现出 ...

  4. 《基于Qt的VR编辑器开发》(Yanlz+Unity+SteamVR+5G+AI+VR云游戏+Qt+编辑器+跨平台+人机交互+触发事件+立钻哥哥+==)

    <基于Qt的VR编辑器开发> <基于Qt的VR编辑器开发> 版本 作者 参与者 完成日期 备注 YanlzFramework_Qt_V01_1.0 严立钻 2019.09.04 ...

  5. linux qt5.7下打地鼠源程序,基于QT的打地鼠游戏

    [实例简介] 基于QT的一个打地鼠游戏,采用随机数的方法,是地鼠产生随机序列,有得分界面,动画效果也不错,用C++进行编程 [实例截图] [核心代码] 打地鼠 └── 打地鼠 ├── erwei │  ...

  6. 基于QT Plugin框架结构

    基于QT Plugin框架结构 2009-04-24 18:56:02|  分类: 日常总结|举报件一样,是一种计算机应用程序,它和主应用程序(host application)互相交互,以提供特定的 ...

  7. Qt Creator创建基于Qt Widget的应用程序

    Qt Creator创建基于Qt Widget的应用程序 创建基于Qt Widget的应用程序 创建文本查找器项目 设计用户界 头文件 源文件 创建资源文件 编译并运行程序 创建基于Qt Widget ...

  8. 基于Qt\C++实现的网络远程控制系统

    基于Qt\C++实现的网络远程控制系统     本系统在Qt平台上采用C++语言实现的网络远程控制.通过将server部署到腾讯云服务器上,利用云中转的内网穿透方式实现不同内网之间的远程控制. 该系统 ...

  9. windows平台下基于QT和OpenCV搭建图像处理平台

        在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...

最新文章

  1. COM:追踪植物-微生物组互作的进化历史
  2. FPGA基础知识极简教程(3)从FIFO设计讲起之同步FIFO篇
  3. java小程序例子_「小程序JAVA实战」java的聚合项目搭建(30)
  4. 【转知乎】人工智能会是泡沫吗?
  5. win10电脑服务器在哪个文件夹下,Win10桌面背景在哪个文件夹?Win10桌面背景所在文件夹介绍...
  6. iOS开发(9)UISlider
  7. 分析linux系统的运行性能,Linux系统下常见性能分析工具的使用
  8. 列表推导式 生成器表达式
  9. 脚本小子福利:安卓远控木马直接生成
  10. 赛门铁克管理密码忘记卸载工具
  11. 【Unity 学习笔记】01 素材的导入和常见功能
  12. ubuntu ftp服务器上传文件,ubuntu ftp服务器上传文件
  13. 三星android7要更新8,三星Bixby Voice将停止支持安卓7.0/8.0,用户可以升级系统使用...
  14. DWcs6+AppServ快速搭建PHP环境
  15. 如何获取微信开发者id及设置微信授权目录
  16. 99%的人都不知道内网、外网、宽带、带宽、流量、网速之间的区别与联系
  17. 新手如何看k线(图) .
  18. 物联网时代来袭,智能快递柜到底方便了谁?
  19. 开机自动启动 Ubuntu iBus 输入法
  20. 用python打开多个摄像头_python-无法同时连接6个以上的IP摄像机

热门文章

  1. android 模仿qq 上传头像,Android 仿qq上传头像(一)
  2. 项目架构——面向对象与软件工程实验五
  3. 【Python】Gamma分布详解
  4. 活用社群管理方法,让你的社群活力四射
  5. 用Annovar注释非人类基因组,如小鼠mm9
  6. 少一些计较多_少一些计较多一些包容的说说
  7. 高矿化度矿井水深度除氟装置CH-87技术解析
  8. hammer.js移动端开发手势库
  9. 43岁读博士,无关年龄 ,一位70后大哥的励志人生
  10. 平移变换计算机图形学c语言代码,计算机图形学第一次作业——平移,缩放和旋转...