Skip to content

GZK0329/G-Chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

G-Chat

1.构建思路与测试分析

项目结构

1.构建思路

1.1 UDP广播搜索再建立TCP连接

1.2 NIO优化线程优化

阻塞IO,在大量客户端连接时候,频繁地增加线程,会造成大量的资源消耗

非阻塞IO,通过一个线程维护大量客户端的注册

线程优化前 创建2000客户端连接服务器,服务需要创建4000+线程来处理每个客户端的读取与写入,很多线程长时间处于阻塞状态,非常低效

通过线程池优化后,创建2000客户端连接服务器

1.3 消息粘包消息不完整的解决

消息粘包

TCP是可靠的,保证数据的完整性,本身不存在粘包。这里的消息粘包是指数据处理而不是传输时候的粘包。

消息不完整

TCP是可靠的,保证数据的完整性,本身也不存在丢失的可能,也是指的数据处理层面的消息不完整。 指的是如缓冲区空间不够而误以为已经接收完成,造成的数据不完整,或者因为网络等原因,数据包还未完整送达,而接收方误以为已经传输完成,进行了后续消息处理的步骤,从而造成消息不完整。

解决思路

对数据包进行分析,构建一个数据头部,其中包含要接收此数据的大小,特征等,数据头 + 数据体 = 完整数据包

1.4 文件传输的实现实现流传输 消息分片支持文件快传

文件传输实现

文件传输成功进行MD5校验无误

后续待完善计划

大文件消息分片

心跳包维持连接

语音传输的支持

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages