zoukankan
html css js c++ java
关于tcp send的再次思考
最近在用socket时,再次思考了一下如何确保对方收到消息的问题
下面是一些不错的回答
https://www.zhihu.com/question/25016042/answer/73785738
其实我已经说得很清楚了,其实就相当于文件传输的断点续传。你没有必要每次send成功后,去等待服务端发回一个信息(其实你也可以这么做,不过效率比较低),你可以这么做,如果send返回错误,你关掉连接后重新连接,等待对方发出已收到字节数的通知,然后,你再确定从何处开始发送,最后,如果你已经发完,也必须等待对方发出已经收完的通知,这样你可以确保你的文件的正确接收。
我这里只是讲了大致过程,不过要点都讲了,具体的实施,我想并不困难.
我想,你所谓的send成功指的是接收方已经发出了确认信息,事实上,你没有必要知道这些信息,因为tcp层本身就有校验,确认机制,如果出现异常,send或者closesocket就会及时返回错误的,因为tcp底层有确认机制,在数据没有正确发出前,他是不可能把数据扔掉的,他会不断的发送,接受应答,直到数据正确接收,或者他认为已经出现异常时为止,如果他认为已经出现异常,在你调用send或者closesocket时会返回一个错误信息
总之,tcp会保证数据正确有序的到达,但是,他不会也不可能去处理异常,它的这种保证也仅限于tcp层,因此,你的程序仍有必要在作一些确认
查看全文
相关阅读:
[NOI2014]动物园 题解(预览)
CF1200E 题解
KMP算法略解
[EER2]谔运算 口胡
CF504E Misha and LCP on Tree 题解
长链剖分 解 k级祖先问题
双哈希模板
Luogu P5333 [JSOI2019]神经网络
UOJ449 【集训队作业2018】喂鸽子
LOJ6503 「雅礼集训 2018 Day4」Magic
原文地址:https://www.cnblogs.com/wangshaowei/p/11822784.html
最新文章
[LOJ#3119][Luogu5405][CTS2019]氪金手游(DP+容斥)
[LOJ#3119][Luogu5400][CTS2019]随机立方体(容斥+DP)
[BZOJ2739]最远点(DP+分治+决策单调性)
Manjaro 安装 ibus-rime 输入法
利用 systemd 实现 Clash 开机自启
[CSP-S 2019]括号树
[CSP-S 2019]格雷码
将 iTunes 降级到支持安装 .ipa 文件的版本
Debian 9 安装 libsodium
TCP BBR 从开启到关闭:以 Debian 9 为例
热门文章
高中地理思维导图(浙江省学考专用)
[NOI2019]回家路线
关于当代青少年梦想追逐的问卷调查
普通莫队学习
多项式全家桶的学习历程
P4461 [CQOI2018]九连环 题解?
[ZJOI2014]力 题解
模拟退火板子
匈牙利算法解无边权二分图最大匹配 入门教程
OI中各种有限状态自动机自动机算法所涉及的部分基本知识整理
Copyright © 2011-2022 走看看
我这里只是讲了大致过程,不过要点都讲了,具体的实施,我想并不困难.
总之,tcp会保证数据正确有序的到达,但是,他不会也不可能去处理异常,它的这种保证也仅限于tcp层,因此,你的程序仍有必要在作一些确认