我是靠谱客的博主 坚强乐曲,最近开发中收集的这篇文章主要介绍265-聊天服务器和客户端如何保证消息的可靠传输,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

如何保证消息的可靠传输?

意思是: 客户端把消息发送出去了,只要客户端这里显示他的消息发送成功,就要保证对端一定要收到,要么收不到,客户端就显示发送失败,用户后续选择重新发送消息。如果客户端显示消息发送成功,就一定保证对端一定收到这条消息。

我们可以在业务层实现消息的确认机制(结合心跳):在消息发送之后对端给予响应。

问题: 集群聊天服务器是基于TCP协议实现的,TCP协议本身是可靠的传输协议,在发送数据的时候,有超时重传机制,TCP发送每一个数据的时候,都会等待得到接收方返回的ACK消息确认,它如果得不到ACK,就会超时重传,选择重新发送这个数据,得到ACK确认之后,保证消息发送成功了。为什么业务层上还要实现消息确认机制呢?

业务层的消息可靠传输肯定不能由TCP协议超时重传来保证的!

在这里插入图片描述

这个send的返回值大于0,发送成功了,返回了发送成功的字节数,但是并不代表着这条消息跑到对端,对端接收到了。

send怎么可能是调用的时候还包括客户端往服务器发送的过程和服务器接收到了,然后响应,响应成功了,send才返回?

不可能的!如果是这样

最后

以上就是坚强乐曲为你收集整理的265-聊天服务器和客户端如何保证消息的可靠传输的全部内容,希望文章能够帮你解决265-聊天服务器和客户端如何保证消息的可靠传输所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部