# SocketSoftware
功能:仿QQ(局域网一对多聊天)
语言:C#(Winform)
平台:Visual Studio 2019
数据库:MySQL
时间:2019-11-18~2019-11-27
---
### 步骤
1. 参考QQ软件设计界面,达到界面仿真效果
2. 建立数据库,存储用户账号、密码等信息
3. 提供注册账号、找回密码功能
4. 创建服务端、客户端
5. 测试服务端、客户端是否能建立通信
6. 编码实现文本传输
7. 编码实现表情、图片传输
8. 编码实现文件传输
---
### 简介
仿真QQ,可实现局域网一对多通信(包括传文本、图片、表情、文件(我设置了最大200M,可自行在代码修改缓冲区大小)),亦可本机自己开两个程序对聊。
---
### 使用说明(Win系统)
首先要建立数据库(我用的Navicat),格式在"database.png",仿照建立即可,记得在UserData代码中修改连接数据库的信息(数据库的端口记得让防火墙允许连接);其次我设立的Socket服务端侦听端口为6666,阁下可在cmd输入“netstat -an”查看此端口有无被占用,若有则在UserData代码更改成未被占用的一端口;接下来要在防火墙的入站规则新建规则,允许此端口被连接。完成上述操作后即可通信~
---
### 心得
11月18号晚上,我把登陆界面和聊天界面做了出来;19号则把主界面设计出来;20号我建立数据库,并完成注册账号以及找回密码功能;21号到23号队友在熟悉数据库并把数据库信息与界面衔接起来,而我在忙C#的数据库作业;24号我开始实现通信功能,刚开始只有传输文本,很快就实现了功能,后面当我加上判断传输的是文本还是图片时,就出现错误,文本能传输而传图片的时候有的能传有的则成了看不懂的字母。我百思不得其解,我怀疑是我写的通信方法有问题,因此卡了整整一天,然而在25号晚上我灵光一闪,发现了大BUG,那就是通信时是另一个线程,我写的while()循环是在这个线程跑的,而当标志量取true时while循环实际上不知道跑到哪个if else的判断语句了,所以才会出现有的图片能传有的则变成字母的现象;然后我把标志量改成三个锁后还是不行,我又发现原来screen作为一个变量,多线程情况下有可能会多个线程同时访问它,造成错误,因此我给screen加了lock,确保同一时间只有一个线程访问它;然而还是有问题,那就是只有一方传另一方再传时双方才会同时发送数据,我又卡了半天,终于在26号晚上发现bug,那就是这个标志量实际上只在自己这标志着,并没有传递给对方,因此对方根本不知道这边传的是文本还是文件还是照片,所以我在想办法,想一个既能传递信号又不会影响原有数据的方法,这时我想到了ip数据报,它的头部不也有信息吗?所以我在字节流头部分别加上不同标志,对方接收后判断标志信息并去除标志头部,这样便实现了准备送达数据的功能。
---
### 截图
- 登录界面
![login](readme_img/login.png)
- 注册界面
![register](readme_img/register.png)
- 主界面
![main](readme_img/main.png)
- 聊天界面
![chat](readme_img/chat.png)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
C#基于Winform+Socket+MySQL实现的仿QQ局域网聊天工具源码+数据库 可实现局域网一对多通信包括传文本、图片、表情、文件我设置了最大200M,可自行在代码修改缓冲区大小,亦可本机自己开两个程序对聊。
资源推荐
资源详情
资源评论
收起资源包目录
C#基于Winform+Socket+MySQL实现的仿QQ局域网聊天工具源码+数据库 (117个子文件)
SocketSoftware.csprojAssemblyReference.cache 77KB
DesignTimeResolveAssemblyReferences.cache 18KB
DesignTimeResolveAssemblyReferencesInput.cache 9KB
SocketSoftware.csproj.GenerateResource.cache 2KB
SocketSoftware.csproj.CoreCompileInputs.cache 41B
App.config 180B
SocketSoftware.exe.config 180B
SocketSoftware.csproj.CopyComplete 0B
InfoList.Designer.cs 40KB
Chat.Designer.cs 26KB
Chat.cs 26KB
PersonalInfo.Designer.cs 25KB
InfoList.cs 19KB
AddFriends.Designer.cs 13KB
Login.Designer.cs 13KB
Register.Designer.cs 11KB
FindPassword.Designer.cs 9KB
Resources.Designer.cs 9KB
Msg_IfAddFriend.Designer.cs 8KB
PersonalInfo.cs 7KB
MyOperation.cs 7KB
Register.cs 5KB
Msg_IfAddFriend.cs 5KB
Login.cs 5KB
UserData.cs 4KB
AddFriends.cs 3KB
FindPassword.cs 2KB
AssemblyInfo.cs 1KB
Settings.Designer.cs 1KB
Program.cs 421B
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
SocketSoftware.csproj 7KB
CSkin.dll 2.61MB
BouncyCastle.Crypto.dll 2.34MB
MySql.Data.dll 752KB
MySql.Data.dll 752KB
Renci.SshNet.dll 413KB
Google.Protobuf.dll 292KB
Properties.Resources.Designer.cs.dll 5KB
SocketSoftware.exe 733KB
SocketSoftware.exe 733KB
qq.ico 9KB
storage.ide 1.72MB
storage.ide 4KB
storage.ide-shm 32KB
storage.ide-wal 2.19MB
1.jpg 53KB
login.jpg 23KB
db.lock 0B
db.lock 0B
README.md 3KB
SocketSoftware.pdb 162KB
SocketSoftware.pdb 162KB
191127042639.png 1020KB
login.png 85KB
191226111447.png 70KB
191226110739.png 70KB
default.png 64KB
191124061842.png 64KB
chat.png 52KB
191129042437.png 29KB
main.png 29KB
register.png 27KB
191127102835.png 16KB
191123011544.png 15KB
191127102056.png 14KB
191123011626.png 11KB
title.png 9KB
191127042620.png 8KB
191129120002.png 8KB
191124061239.png 8KB
191124061810.png 8KB
6.png 4KB
7.png 4KB
5.png 4KB
191129095937.png 4KB
191128034238.png 4KB
3.png 3KB
4.png 3KB
1.png 3KB
2.png 3KB
8.png 3KB
9.png 3KB
search.png 2KB
add.png 1KB
emoji.png 430B
photo.png 377B
menu.png 252B
folder.png 251B
SocketSoftware.Properties.Resources.resources 524KB
SocketSoftware.InfoList.resources 40KB
SocketSoftware.Login.resources 20KB
SocketSoftware.Chat.resources 20KB
SocketSoftware.AddFriends.resources 9KB
SocketSoftware.FindPassword.resources 9KB
SocketSoftware.Register.resources 9KB
SocketSoftware.Msg_IfAddFriend.resources 9KB
SocketSoftware.PersonalInfo.resources 9KB
共 117 条
- 1
- 2
资源评论
云哲-吉吉2021
- 粉丝: 3207
- 资源: 1130
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Flume进阶-自定义拦截器jar包
- Dubins曲线算法讲解和在运动规划中的使用.pdf
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
- 时代的sdddsddsddsd
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功