基于C++的即时通信软件设计

article/2025/11/5 10:34:11

目录
— 、 概 述 1
1 . 1 设 计 目 的 : 1
1 . 2 设 计 内 容 : 1
1 . 2 . 1 功 能 设 计 : 1
1 . 2 . 2 界 面 设 计 : 1
1 . 2 . 3 客 户 端 、 服 务 器 设 计 : 1
1 . 3 设 计 要 求 : 1
二 、 设 计 任 务 分 析 1
2 . 1 功 能 设 计 分 析 : 1
2 . 2 界 面 设 计 : 1
2. 3 客 户 端 、 服 务 器 设 计 : 1
2 . 3 . 1 客 户 端 设 计 : 1
2 . 3 . 2 服 务 器 端 设 计 : 1
三 、 总 体 设 计 2
3. 1 界 面 设 计 结 果 2
3 . 1 . 1 登 陆 、 注 册 对 话 框 2
3 . 1 . 2 主 界 面 对 话 框 2
3 . 2 客 户 端 程 序 处 理 流 程 图 : 3
3. 3 服 务 器 端 程 序 处 理 流 程 图 4
四 、 程 序 实 现 5
4. 1 消 息 结 构 体 : 5
4 . 1 . 1 消 息 结 构 体 5
4 . 1 . 2 消 息 模 板 : 5
4 . 1 . 3 解 释 : 5
4 . 2 客 户 端 程 序 实 现 : 5
4 . 2 . 1 客 户 端 自 定 义 套 接 字 类 ( 继 承 M F C 抽 象 类 C S O C K E T ) 实 现 : 5
4 . 2 . 2 登 陆 、 注 册 对 话 框 实 现 : 6
4 . 2 . 3 主 对 话 框 实 现 : 7
4 . 3 服 务 器 程 序 实 现 : 10
五 、 运 行 结 果 : 15
5 . 1 登 陆 、 注 册 : 15
5 . 2 消 息 发 送 : 17
5 . 2 . 1 单 发 消 息 : 17
5 . 2 . 2 群 发 消 息 : 18
5 . 3 文 件 发 送 : 19
六 、 心 得 与 体 会 20
6 . 1 遇 到 的 问 题 及 解 决 方 案 20
6 . 1 . 1 服 务 器 如 何 与 多 个 客 户 端 进 行 交 互 ? 20
6 . 1 . 2 : 如 何 实 现 客 户 端 消 息 的 非 阻 塞 式 接 收 ? 20
6 . 2 心 得 与 体 会 : 21
参 考 文 献 : 21
— 、概述
1… 1 设 计 目 的 :
设计一个基于 LAN 的即时通信软件,实现在局域网下可靠的、稳定的即时通信功能以及其从属的附加功能。 1 . 2 设 计 内 容 :
1… 2 . 1 功 能 设 计 :
·实现一对一的单播通信,包括消息发送与接收以及文件的发送与接收;
·实现一对多的多播通信,包括消息的发送与接收;
·附加功能:实现登陆、注册、获取当前在线情况等功能;
1 . 2 . 2 界 面 设 计 :
·客户端的交互界面设计。
1 . 2 . 3 客 户 端 、 服 务 器 设 计 :
·客户端需要完成的功能;
·服务器需要完成的功能;
·客户端、服务器的交互设计;
1… 3 设 计 要 求 :
结合《计算机网络》课程所学的知识以及查阅相应的资料完成相应的设计内容, 且需要保证设计的质量以及程序的可靠性和稳定性。
二、设计任务分析
2… 1 功 能 设 计 分 析 :
·实现一对一的单播、多播通信:
主要运用消息转发技术,需要服务器来处理消息的解析和转发;其中消息的解析包括获取消息的发送者、接收者、类别;本文转载自http://www.biyezuopin.vip/onews.asp?id=15303针对不同的解析结果需要做出不同的响应。
·实现附加功能:
实现登陆、注册、获取当前在线情况等功能;将客户端对附加功能的调用当作特殊的请求消息发送给服务器,服务器解析后做出不同的响应。 2 . 2 界 面 设 计 :
客户端界面需要有较好的交互性,因此需要设计:
·登陆、注册对话框:包括用户名输入框、登陆和注册按钮;
·主界面对话框:包括消息发送编辑框、消息接收显示区、好友在线情况显示区、发送按钮、以及登陆按钮; 2 . 3 客 户 端 、 服 务 器 设 计 :
2 . 3 . 1 客 户 端 设 计 :
·获取客户所发送的消息内容;
·根据客户要求封装消息并发送消息;
·接收服务器发来的消息;
·解析接收的消息并执行对应响应的功能;
2… 3 . 2 服 务 器 端 设 计 :
·获取客户端发来的消息
·解析消息并执行对应的处理
·将处理结果封装成消息发送给指定客户

// MySocket.cpp : implementation file
//#include "stdafx.h"
#include "LanMessage.h"
#include "MySocket.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// CMySocketCMySocket::CMySocket()
{
}CMySocket::~CMySocket()
{
}
void CMySocket::OnReceive(int n)//消息响应处理
{if(dlg->online)//在线才进行响应{mes trans;if(!Receive((void*)&trans,sizeof(trans))){return;}//获取服务器消息CString txt1=trans.from,txt2="在线用户";if(txt1==txt2)//如果是"在线客户"消息{CString show;show.Format("当前用户:%s\r\n%s:%s",dlg->me,trans.from,trans.content);dlg->m_online=show;dlg->UpdateData(false);//刷新主界面}else if(trans.from[0]=='_')//如果是文件消息{CStdioFile put;CString name=trans.from;name=name.Mid(1);//获取文件名if(!put.Open(name,CFile::modeCreate|CFile::modeWrite))//将文件内容存储{	AfxMessageBox("创建文件失败!");return;}else put.WriteString(trans.content);put.Close();}else {//如果是普通消息CString show;show.Format("From %s:%s\r\n",trans.from,trans.content);dlg->m_show+=show;dlg->UpdateData(false);//刷新主界面}}
}
// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CMySocket, CSocket)//{{AFX_MSG_MAP(CMySocket)//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif	// 0/
// CMySocket member functions

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/EujTbQyO.shtml

相关文章

企业即时通讯软件开发基本功能有哪些?

即时通讯是基于互联网技术的新型交流沟通方式,是目前最流行的通讯方式,广泛的应用市场使得各种各样的即时通讯软件系统也层出不穷,企业即时通讯就是其中的一种延伸。是一种面向企业终端使用者的网络营销、网络沟通和内容管理的工具服务&#…

IM即时通讯软件开发

废话不多说,要想知道社交IM系统软件公司哪家靠谱,教你怎么辨别软件开发公司靠谱。 一:哪些IM即时通讯软件开发公司不靠谱?用十余年经验,总结出行业公司不靠谱通病。 1、对于一款社交IM系统软件,软件公司给…

移动开发即时通讯APP源码聊天社交软件解决方案

即时通讯app源码特点 1、即时通讯适合的场景包括文字、语音、音视频播放等,比较偏向于文字方面的聊天 2、即时通讯非常适合聊天平台源码的文字聊天,能有效保证用户之间的聊天效率, 3、即时通讯支持消息的采集、处理、编码、解码、播放和渲染…

即时通讯在线聊天APP开发解决方案

即时通讯是目前移动端最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能,打造一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。今天河北领行…

开发即时通讯到底需要什么样的技术,需要多久的时间

互联网时代催生了许多新的产业和制度,在各类互联网公司中,软件开发,尤其是即时通讯软件的开发和应用,是重要的组成部分。很多人一想到即时通讯,就会被其高质量的信息通信技术和快速的信息传输速度所折服,同…

一个简单的即时通讯工具的设计与开发

技术:Java等 摘要: 即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。Java是当前比较流行的开发语言之一&…

C++ 在函数中用static定义的变量的

在C中&#xff0c;在函数中使用static定义一个变量&#xff0c;该变量最终只会分配一次内存&#xff0c;如果下次继续调用该函数&#xff0c;不会再重新分配内存给变量&#xff0c;而是使用上次分配的内存。 #include<iostream> using namespace std;class StaticVer { …

C语言的static函数

前几天&#xff0c;一个同事跟我说在我们的代码库里面看到&#xff0c;一个static函数被放在了头文件里面&#xff0c;可构建的时候却没有报告链接错误。我的第一反应也是&#xff0c;函数被放在头文件里面&#xff0c;当这个头文件被多个源文件引用之后&#xff0c;再把那几个…

c与c++ static函数的区别

c与c static函数的区别 c 与c static 函数的区别 static 关键字是 C, C 中都存在的关键字 , 它主要有三种使用方式 , 其中前两种只指在 C 语言中使用 , 第三种在 C 中使用 (C,C 中具体细微操作不尽相同 , 本文以 C 为准 ).(1) 局部静态变量 (2) 外部静态变量 / 函数 (3) 静…

static的在函数中作用

看如下例子 #include<stdio.h> int f() {static int k0;//用static&#xff0c;k只会在第一次调用这个函数时初始化为0&#xff0c;此后不再初始化k;return k; } int main() {printf("%d\n",f()); printf("%d\n",f()); 再次次调用f()函数&#xff0…

c++中static的用法详解

C 语言的 static 关键字有三种&#xff08;具体来说是两种&#xff09;用途&#xff1a; 1. 静态局部变量&#xff1a;用于函数体内部修饰变量&#xff0c;这种变量的生存期长于该函数。 下面展示一些 内联代码片。 int foo(){static int i 1; // note:1//int i 1; // not…

C语言中static函数

转载自&#xff1a; https://blog.csdn.net/cw616729/article/details/95003577 https://blog.csdn.net/keyeagle/article/details/6708077 1.含义&#xff1a; 定义为static的函数&#xff0c;作用域为本文件&#xff0c;它只能在定义该函数的源文件中使用。 2.好处 使用s…

static作用(修饰函数、局部变量、全局变量)

C语言&#xff1a;static作用&#xff08;修饰函数、局部变量、全局变量&#xff09; 一、 static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式&#xff0c; 静态全局变量当然也…

数据链路层协议 ——— 以太网协议

文章目录 链路层解决的问题以太网协议认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMUT对IP协议的影响MTU对UDP协议的影响MTU对TCP协议的影响数据跨网络传输的过程 ARP协议ARP协议的作用ARP数据的格式ARP协议的工作流程 链路层解决的问题 IP拥有将数据跨网…

DNS详解

前言&#xff1a; 前面讲了域名、IP&#xff0c;那么还缺少一个主角—DNS。这些都是网络中最最最基础的&#xff0c;也是最重要的概念&#xff0c;很有必要深入学习下。 网站打开的原理 我们在通过网站网址打开网站的过程中&#xff0c;其实就是浏览器获取到了隐藏在网址背后的…

一文读懂物联网 MQTT 协议之实战篇

一、前言 上一篇我们介绍了 MQTT 协议格式以及相关的特性&#xff1a;一文读懂物联网 MQTT 协议之基础特性篇&#xff0c;这一篇我们就来实战一番&#xff0c;理论得与实践结合&#xff0c;方能吃透 MQTT。 我的那个读者还提到了讲一下 Mosquitto&#xff0c;这是一款开源消息…

基于光流传感器定位和导航的自主飞行无人机

基于光流传感器定位和导航的自主飞行无人机 An Autonomous UAV with an Optical Flow Sensor for Positioning and Navigation 注&#xff1a;翻译水平有限&#xff0c;错误之处&#xff0c;敬请指正&#xff01; 原文链接&#xff1a;http://cdn.intechopen.com/pdfs/45731.p…

Kubernetes NetworkPolicy:打造更安全的容器运行环境

常见的应用可以分为两大类&#xff1a;Job和Service。Job比较简单&#xff0c;就是一个普通的任务&#xff0c;完成之后就退出&#xff0c;一般不需要暴露对外服务的网络监听端口。Service是指长期运行的进程&#xff0c;监听某个网络端口&#xff0c;其他服务可以通过网络连过…

Drupal远程代码执行漏洞(CVE-2018-7600)

目录 一. 漏洞原理 二. 影响版本 三. 漏洞环境搭建 四. 漏洞复现 一. 漏洞原理 Drupal是一个开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;全球超过100万个网站&#xff08;包括政府&#xff0c;电子零售&#xff0c;企业组织&#xff0c;金融机构等&#xff0…

记一次从盲SSRF到RCE

公粽号&#xff1a;黒掌 一个专注于分享网络安全、黑客圈热点、黑客工具技术区博主&#xff01; 一 前言 发现此漏洞的漏洞赏金计划不允许公开披露&#xff0c;因此我不会直接使用涉及的系统名称。该项目是发布在Hackerone时间最长漏洞奖金最大的项目之一, Hackerone上有很多关…