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层,因此,你的程序仍有必要在作一些确认
查看全文
相关阅读:
sparql学习sparql示例、dbpedia在线验证
中国绿卡
逾期率的水有多深,你知道吗?
ICO和区块链区别
What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
Link static data in sql source control
sql data compare
viewbag
多态的实际使用
win10 sedlauncher.exe占用cpu处理
原文地址:https://www.cnblogs.com/wangshaowei/p/11822784.html
最新文章
网络基础知识
表单的验证:客户端验证和服务器端验证
MySQL 安装 启动命令总结
相对路径名
andriod获得应用程序的Context
android应用名称设置的问题
Android Studio常见问题 -- AndroidManifest.xml 覆盖问题
andriod 调用高德地图
andriod 浏览文件
andriod 获得MP4时长
热门文章
andriod 错误:Only the original thread that created a view hierarchy can touch its views——Handler的使用
andriod 播放mp4
ImageView 设置图片来自:http://blog.csdn.net/lincyang/article/details/6562163
extends和implements区别
Redis入门很简单之四【初识Jedis】
Redis入门很简单之三【常见参数配置】
Redis入门很简单之二【常见操作命令】
Redis入门很简单之一【简介与环境搭建】
有了场景和画像才有资格说懂用户
芝麻分攻略
Copyright © 2011-2022 走看看
我这里只是讲了大致过程,不过要点都讲了,具体的实施,我想并不困难.
总之,tcp会保证数据正确有序的到达,但是,他不会也不可能去处理异常,它的这种保证也仅限于tcp层,因此,你的程序仍有必要在作一些确认