winform项目_winform项目——仿QQ即时通讯程序01:原理及项目分析

即时通讯程序,腾讯QQ可以说是一家独大,虽然市场上仍然有类似QQ的即时通讯程序,但是基本上面向的对象都是特定人群。那么,现在做一个即时通讯的软件还有意义吗?在我看来,意义非常大。作为一个学习编程的人,整天和电脑、互联网打交道,而互联网最大的作用就是信息传递,如果能够做出自己的即时通讯软件,不仅能够增加编程技术经验,更能深深体会互联网信息传递的奥妙。

3611f69e0d6f5afe87605bb1b2f9e963.png


接下来几天,我将会分多个文章来做这个项目,有兴趣的小伙伴可以按照文章中的步骤一起做。做这个项目你需要会这些技术:
1.winform
2.SQL Server
今天这篇文章,我们就先来进行项目分析。
在进行分析之前呢我们要先讲一下即时通讯软件的原理

即时通讯,即用户A给用户B通过网络发送消息,用户B通过网络接收到消息。如果不考虑互联网的诸多限制,那么每个用户只需要一个客户端在手中就行了,用户与用户之间就是单线联系,但是呢因为公网IP资源有限,我们客户端设备手机、电脑等一般都不是直接连接的互联网,而是连接的运营商划分的局域网当中, 而两台不同局域网的设备一般是不能穿透中间的互联网直接访问的,所以呢,问题就出在这里,既然都可以访问互联网,那么在互联网上加一个中间商,消息呢就都先发送给这个中间商,由它来帮忙转发一下消息,这样就能实现A和B之间的通信了。

f521033d2d293381c0baf76eec020814.png


那么这个中间商就是即时通讯软件的服务端。功能分析
根据用户操作步骤,我们可以将软件划分如下几种功能:
一、客户端
1.用户注册:基本资料的填写,由系统随机生成账号id
2.用户登录
3.用户资料初始化:
初始化用户资料,比如头像、昵称、个性签名、好友等
初始化好友列表:获取好友在线状态
初始化验证消息
4.查找并发送添加好友请求
5.同意好友验证
6.好友间互发消息:历史记录保存在本地
二、服务端
1.消息转发:即时通讯系统的核心功能
2.日志记录:记录所有用户的上线、下线操作;

暂时就先定下这些功能,后面做的时候如果有想不到的再补充,下一篇文章就是进行数据库的分析与设计了。

本文系小博客网站原创,转载请注明文章链接地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android面试基础一

Android面试基础二-原理及常见问题 目录1、四大组件1)Activity2)Service3)ContentProvider4)Broadcast Receiver2、四大组件的生命周期和简单用法1)Activity2)Service3)BroadcastReceiver4&…

python怎么用大数据分析师_如何七周成为数据分析师18:Python的新手教程

本文是《怎样七周成为数据剖析师》的第十八篇教程,假定想要了解写作初衷,能够先行阅读七周指南。温馨提示:假定您曾经熟习Python,大可不用再看这篇文章,或只选择部分。Python是近年来最火爆的言语,曾经作为…

Android面试基础二-原理及常见问题

Android 面试基础一 目录Android源码相关分析1、Android属性动画实现原理2、补间动画实现原理3、Android各个版本API的区别4、Requestlayout,onlayout,onDraw,DrawChild区别与联系5、invalidate和postInvalidate的区别及使用6、Activity-Wind…

python数据展示库_收藏!盘点很实用的数据科学Python库

数据科学是一门研究数据并从中挖掘信息的学科。它不要求自创或学习新的算法,只需要知道怎么样研究数据并解决问题。这一过程的关键点之一就在于使用合适的库。本文概述了数据科学中常用的、并且有一定重要性的库。在进入正题之前,本文先介绍了解决数据科…

Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录调试中的堆栈轨迹从外部来源打开堆栈轨迹监控剪…

python股票数据分析实验报告_Python实验报告

一、实验原理(要求、任务等)(一)、Python的开发环境Python诞生于20世纪90年代初,是一种解释型、面向对象、动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一。编写、编译和运行Python程序有以下3种方法。1.使用交互式解释器2.使用Windows命…

Android日志[进阶篇]一-使用 Logcat 写入和查看日志

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录查看应用日志写入日志消息Logcat 消息格式设置…

哈希表数据结构_算法与数据结构-哈希表

前面我们已经讲到了数组和链表,数组能通过下标 O(1) 访问,但是删除一个中间元素却要移动其他元素,时间 O(n)。 循环双端链表倒是可以在知道一个节点的情况下迅速删除它,但是吧查找又成了 O(n)。难道就没有一种方法可以快速定位和删…

Android日志[进阶篇]三-Logcat 命令行工具

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录日志记录系统概览命令行语法logcat命令行选项过…

python while语法结构_python语法之流程控制(if while for)

一.python语法之流程控制1.1什么是流程控制?流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(判断)、循环结构(while for)二.分支结构2.1 什么是分…

Android日志[进阶篇]四-获取错误报告

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录前言从设备上获取错误报告从 Android 模拟器上…

下列哪个适合做链栈_朋友圈人格图鉴:三天可见 vs 全部可见,哪个更适合做恋人?...

你们的朋友圈里有没有这样几种人&#xff1f;<< 朋友圈大赏 >>你可能已经对这些朋友圈的风格习以为常&#xff0c;其实&#xff0c;每个人在朋友圈展示的语言、行为&#xff0c;可能默默揭示着一个人自己原本是怎样的人、想成为什么样的人&#xff0c;以及与他人的…

python玫瑰花数量的含义_玫瑰花数量代表的含义

1朵玫瑰代表——我的心中只有你 ONLY YOU&#xff01;2朵玫瑰代表——这世界只有我俩&#xff01;3朵玫瑰代表——我爱你 I LOVE YOU&#xff01;4朵玫瑰代表——至死不渝&#xff01;5朵玫瑰代表——由衷欣赏&#xff01;6朵玫瑰代表——互敬 互爱 互谅&#xff01;7朵玫瑰代表…

Android日志[进阶篇]五-阅读错误报告

Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Android日志[进阶篇]四-获取错误报告 Android日志[进阶篇]五-阅读错误报告 目录Logcat查看事件日志ANR 和死锁找出无响应的应用…

iatf16949内审员_申请IATF16949认证有什么要求

1、证件要求必须要提供三证合一的营业执照&#xff08;在有效期内&#xff09;&#xff0c;营业执照的范围必须与申请IATF16949认证范围一致。2、处于汽车供应链的证明因为IATF16949认证要求厂家必须是直接与生产汽车有关的&#xff0c;具有加工制造能力&#xff0c;并通过这种…

GenseeSDK DocView(OpenGL)引起的TextView显示黑块

现象 先上图&#xff1a; 正常的图&#xff1a; 来到这的大侠是否也出现了同样的问题。 操作与描述 退出直播播放器后&#xff0c;整个app界面所有的TextView(EditText/Button)都显示为黑块。 快速解决 退出直播或点播后不要调用DocView的closeDoc函数即可&#xff0c;当…

python医疗发票 信息抽取_PYTHON网络爬虫与信息提取[信息的组织与提取](单元五)...

1 三种信息类型的简介xml : extensible markup language与html非常相似现有html后有xmlxml是html发展来的 扩展 通用json 类型javascript object notation有类型的键值对 表达的方式一个key对应多个值"key1":["asas",asas]嵌套使用"name":{&quo…

Android WebView https白屏、Http和Https混合问题、证书配置和使用

目录前言启用https后白屏&#xff08;证书错误&#xff09;修改处理WebView中Http和Https混合问题处理办法Webview的几种内容加载模式证书配置或处理https请求的证书okhttp进行请求&#xff1a;HttpsURLConnection忽略证书前言 原有项目中有部分界面是用webview展现的h5页面&am…

Kotlin AAPT: error: resource android:attr/lStar not found.

这是使用kotlin之后发生的错误。 打开 android/app 工程全局搜索androidx.core:core-ktx: 全局搜索快捷键 ctrlshift f将搜索到的内容修改为androidx.core:core-ktx:1.6.0 也就是说将androidx.core:core-ktx: 修改为androidx.core:core-ktx:1.6.0,一般情况下是在module的中的b…

python selenium iframe怎么定位_python+selenium四:iframe查看、定位、切换

iframe是HTML里面嵌套HTML的一种框架1.查看iframe1.Top Window&#xff1a;可直接定位2.iframe#i&#xff1a;说明此元素在iframe上3.iframe显示为空&#xff1a;(id或name为空)4.右边这个看到是空的(2层iframe)以126邮箱为例from selenium import webdriverdriver webdriver.…