# 基于sockets的在线聊天软件的设计和开发 C# WPF WinForm
![img](README.assets/clip_image002.jpg) ![img](file:///C:/Users/shuho/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg)
![img](README.assets/clip_image002-1654684631553.jpg)![img](file:///C:/Users/shuho/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg)
![img](README.assets/clip_image002-1654684639540.jpg)
![img](README.assets/clip_image002-1654684643872.jpg)
![img](README.assets/clip_image002-1654684650759.jpg)
![img](file:///C:/Users/shuho/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg)
![img](README.assets/clip_image002-1654684661353.jpg)
![img](file:///C:/Users/shuho/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg)
![img](README.assets/clip_image002-1654684673696.jpg)
![img](README.assets/clip_image002-1654684679241.jpg)
![img](README.assets/clip_image001.png)
![img](README.assets/clip_image001-1654684704918.png)
![img](README.assets/clip_image002-1654684709762.jpg)
![img](README.assets/clip_image002-1654684716304.jpg)
![img](README.assets/clip_image001-1654684719277.png)
## 3.1 系统总体设计
### 3.1.1 系统总体功能设计
服务器端分为三个模块进行开发:建立链接模块、指令解析模块以及数据库交互模块。
客户端为了提供易懂的操作,需要有一个主界面和多个子界面,并将用户级功能集成到这些子界面中。主界面应拥有支持系统用户功能的底层功能,包括建立链接功能、指令解析功能和子界面的调度功能。用户级功能被分别实现于子界面中,客户端应包含能实现如下功能的子界面:
(1) 登录注册模块:实现账户的登录和注册;
(2) 好友与群组列表:显示好友和群组的列表;
(3) 个人信息模块:显示和修改个人信息;
(4) 系统消息模块:显示发出和收到的好友申请和入群申请,并能够对这些申请进行一些操作;
(5) 发送申请模块:通过该界面对用户发出好友申请或对群组提出入群申请;
(6) 单人聊天:通过该界面和好友进行一对一聊天;
(7) 多人聊天:通过该界面进行群组多人聊天。
系统功能模块图如图3-1所示。
### 3.1.2 服务器端功能模块设计
(1) 建立链接模块设计
该模块用于建立和客户端的链接,在服务器端启动时建立一个监听用套接字,新上线的客户端通过向该套接字发出请求来实现与服务器的链接。当有新的客户端发起链接请求时,创建一个新的套接字用于和该客户端的套接字组成套接字对,并创建一个网络流,服务器端可以通过对该网络流进行读和写来实现与客户端的数据传输。
(2) 指令解析模块设计
该模块将客户端发送来的信息转化为字符串并进行解析,并根据解析出的不同结果进行不同操作,如对从数据库中获取数据、更新数据库中的数据、向其他在线客户端发送消息、向该客户端返回消息等。
(3) 数据库交互模块设计
该模块可以在关系型数据库和服务器端应用程序之间建立链接,使服务器端能够对数据库中储存的数据进行查询和更新,从而满足整个软件系统运行的数据需求。
![img](README.assets/clip_image002-1654684563188.png)
图3-1 系统功能模块图
### 3.1.3 客户端功能模块设计
(1) 登录与注册模块设计
用户的注册:用户输入合法的账号和昵称,并输入两次相同的密码,当想注册的账号已经存在时会返回账号已存在信息,当两次密码输入不一致时会提示两次密码不一致并注册失败。输入全部合法时注册成功。
用户的登录:用户输入账号和密码进行系统登录,账号和密码输入正确时进入系统主界面。
(2) 主界面后台功能
建立链接功能:客户端登录成功后创建一个套接字,并向服务器的监听端口发出链接请求,得到服务器的建立链接的回复后,与服务器提供的套接字形成一个套接字对以创建链接,并创建一个网络流用于与服务器进行数据交互。
指令解析功能:客户端将服务器端发送来的信息转化为字符串并进行解析,并根据解析的结果做出操作,如修改客户端运行内存中的数据、将处理后的结果显示在界面中等。
子界面的调度功能:该系统登录后会打开一个主界面,当主界面被关闭时客户端下线。客户端的功能被分别实现在各个子窗口中,子窗口可以通过操作主窗口的控件来打开,客户端应保证子窗口的打开和关闭能够正确进行,每个打开的子窗口能够准确获取到其功能所需的数据,并在其关闭后予以释放,每个子窗口的操作不应影响到其他窗口。
(3) 系统消息模块
系统消息包括收到的好友申请、收到的入群申请、己方已发送但未被处理的好友申请和入群申请。在此模块可以列表查看以上申请消息,并可以进行一些操作。收到的请求可以选择同意和拒绝,发出的申请消息可以撤销。对于好友申请,选择同意时,需要选择将其放入哪个好友分组,选择同意后,该用户会成为你选定分组下的好友;选择拒绝时,对方的已发出好友申请列表会删除本条申请信息,并且双方不会成为好友。对于群组申请,同意入群申请后,对方会成为该群聊成员,并可通过其客户端进入群组进行多人聊天;拒绝时,对方的已发出入群申请列表中会删除本条申请消息,并且不会加入该群聊。
(4) 发送申请模块
通过该模块可以发送好友申请和入群申请,申请时,需要输入想要成为好友的用户或向加入的群的编号,并选择想要加入的好友分组或群组分组。当该编号不存在时会返回该用户或群组不存在的消息,当输入的编号合法,则会在自己系统消息中的已发出好友申请或入群申请列表中添加一条申请条目。
(5) 群组管理模块
通过该模块可以管理自己创建和管理的群。用户可以创建自己的群组,并在该群组拥有群主权限,群组权限分为群主、管理员和普通群员。群主和管理员可以在系统消息模块对用户的入群申请进行批准和拒绝,也可以将群员踢出群聊。群主还可以设定和取消群聊用户的管理员权限,或者将群转让给其他用户,群主拥有解散群组的权限。
(6) 单人聊天模块
用户可以和作为好友的用户进行一对一文字聊天,用户在线时,如果有好友发送消息,则会有提示消息。用户离线时收到的好友聊天信息可以在上线后进行接受和查看。
(7) 多人聊天模块
用户可以在加入的群组中进行多人聊天,如果有群员发送消息,则所有在线群员会收到提示消息,并且离线的群员也可以在上线后对未读聊天记录进行接受和查看。
## 3.2 建立对象模型
实体-关系图(E-R图)是用于描述实体、属性和关系等概念的工具。系统的对象模型在系统的设计过程中体现在对数据的进一步细化,更加清晰的表现出其有那些属性,各个实体之间又有怎样的关系。在本项目中,所有实体的关系图如图3-2所示。
![img](README.assets/clip_image004.png)
图3-2 总体E-R图
### 3.2.1 用户实体
用户是使用该即时通讯系统进行操作的基本单位,其需具有唯一性,用户实体包含以下属性:
(1) UID:账户的唯一标识符,一个UID对应一个唯一的账户;
(2) 账号、密码:作为账户登录时的身份认证;
(3) 昵称:用户自定义的在客户端显示�
没有合适的资源?快使用搜索试试~ 我知道了~
C# 聊天 基于 C# WinForm sockets的在线聊天软件的设计和开发.zip
共348个文件
dll:60个
xml:57个
cs:46个
需积分: 0 4 下载量 60 浏览量
2024-01-10
14:41:02
上传
评论
收藏 15MB ZIP 举报
温馨提示
Winform使用技巧,实战应用开发小系统参考资料,源码参考。经测试可运行。 C# 聊天 基于 C# WinForm sockets的在线聊天软件的设计和开发 (1) 登录注册模块:实现账户的登录和注册; (2) 好友与群组列表:显示好友和群组的列表; (3) 个人信息模块:显示和修改个人信息; (4) 系统消息模块:显示发出和收到的好友申请和入群
资源推荐
资源详情
资源评论
收起资源包目录
C# 聊天 基于 C# WinForm sockets的在线聊天软件的设计和开发.zip (348个子文件)
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
_._ 0B
Server.csproj.AssemblyReference.cache 23KB
Server.csprojResolveAssemblyReference.cache 12KB
DesignTimeResolveAssemblyReferencesInput.cache 9KB
DesignTimeResolveAssemblyReferencesInput.cache 7KB
Client.csproj.AssemblyReference.cache 7KB
DesignTimeResolveAssemblyReferences.cache 3KB
Client.csprojResolveAssemblyReference.cache 2KB
DesignTimeResolveAssemblyReferences.cache 342B
Client.csproj.GenerateResource.cache 62B
Client.csproj.CoreCompileInputs.cache 41B
Server.csproj.CoreCompileInputs.cache 41B
Client.csproj.SuggestedBindingRedirects.cache 0B
Server.csproj.SuggestedBindingRedirects.cache 0B
packages.config 855B
App.config 551B
Server.exe.config 551B
Client.vshost.exe.config 184B
Server.vshost.exe.config 184B
App.config 178B
Client.exe.config 178B
Client.csproj.CopyComplete 0B
Server.csproj.CopyComplete 0B
Program.cs 64KB
list.cs 40KB
list.Designer.cs 15KB
Friendreq.Designer.cs 10KB
Addfriend.Designer.cs 10KB
Friendreq.cs 10KB
mutualTalk.cs 10KB
Signup.Designer.cs 7KB
mutualTalk.Designer.cs 7KB
SQL_u.cs 6KB
Mutualreqitem.Designer.cs 6KB
Friendreqitem.Designer.cs 5KB
Login.Designer.cs 5KB
Userstate.Designer.cs 5KB
mustate.Designer.cs 5KB
Talking.Designer.cs 5KB
Createmu.Designer.cs 5KB
Talking.cs 5KB
Form1.cs 5KB
frdgroupcg.Designer.cs 4KB
mugroupcg.Designer.cs 4KB
Login.cs 3KB
Form1.Designer.cs 3KB
Signup.cs 3KB
Resources.Designer.cs 3KB
Addfriend.cs 3KB
Friendreqitem.cs 2KB
Mutualreqitem.cs 1KB
frdgroupcg.cs 1KB
mugroupcg.cs 1KB
mustate.cs 1KB
Userstate.cs 1KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
Settings.Designer.cs 1KB
User.cs 903B
Createmu.cs 768B
Program.cs 496B
.NETFramework,Version=v4.8.AssemblyAttributes.cs 206B
.NETFramework,Version=v4.8.AssemblyAttributes.cs 206B
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
Client.csproj 8KB
Server.csproj 7KB
CSkin.dll 2.61MB
CSkin.dll 2.61MB
BouncyCastle.Crypto.dll 2.41MB
BouncyCastle.Crypto.dll 2.41MB
MySql.Data.dll 398KB
MySql.Data.dll 398KB
Google.Protobuf.dll 394KB
Google.Protobuf.dll 393KB
共 348 条
- 1
- 2
- 3
- 4
资源评论
白话Learning
- 粉丝: 4707
- 资源: 3065
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 通过C#实现冒泡排序示例代码(含代码解释)
- 保险交叉销售预测数据集.zip
- StartAllBack-3.6.3-setup, win不同风格的开始菜单
- c语言实现希尔排序基础
- emoji表情使用趋势数据集.zip
- 抖音 douyin 视频评论 spider
- Beyond.Compare.v3.1.10
- 2016年年度培训计划及跟踪表.xls
- 2016年公司员工年度培训计划表.xls
- 《如何设计年度培训计划与预算方案》.ppt
- 公司培训规划之一--员工素养培训(PPT 63页).ppt
- 麦肯锡:进度安排培训.ppt
- 北大讲义《如何设计年度培训计划与预算方案》.ppt
- 美的校园招聘面试官培训方案(ppt 14页).ppt
- 培训与发展.ppt
- 培训管理.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功