tcp ,send函数返回 不是socket_error,证明发送成功,这样我不用观察接收端,就能推理出接收成功了吗?
解决方案 »
- 我只绘制 TAB标签 那TAB标签 的图片 没有办法 把整个 TAB标签覆盖 无论 我怎么 设置目标矩形 宽度 都不行
- UpdateAllViews是发送Invalidate所有的View? 如果View子类是个Form或者list呢?
- 求救,急,在VC 用ADO 打开oracle 中包含blob字段的表的recordset 异常
- string中有类似CString中的Format函数么?
- VC7中突然添加 ico 文件
- ** 公司2个牛人(8年VC经验)都没有解决的问题, 你能搞定吗? **
- dll隐式调用怎么老是错误呢?
- 如何下载flash?
- 菜鳥學VC之一!HDC??
- 请教VC操作mysql的存储过程问题
- 什么是设备描述表
- 刚写了贪吃蛇类,调用很方便!
问题出在对方没有专门发送给你数据。注意:对方的应答在应用层一般不可见。
自己再应用层设计一些数据结构,做一次确认即可.TCP是可靠连接,指的是网络层.和具体应用无关,
如果你的应用和具体数据收发顺序有关,那就需要你自己安排确认.
发送缓存的数据由网络层协议来保证发送到目的端,tcp是面向连接的,全双工模式。一般来说,都会成功。2、网络层协议把数据成功发送到目的地址,只是把数据放到接收端的接收缓存中,接收端没有recv的话,数据还是没有成功被接收。不停是send,接收缓存会用完。
3、接收缓存满后,网络层就不会再发送数据过来。
这样当你再次send的时候,就只是把数据放到发送缓存而已,发送缓存满后,则send函数会失败。
异步非阻塞,send显然只是拷贝数据到缓存区
2.放到缓冲区和路上不代表对方收到了
3.如果网络一切正常,网线没有掉、到对方的路由没有问题,TCP会确保数据在某个时候到达对方,即使丢失了,它也会重传,这是TCP必须保证的。
4.TCP的ACK是在协议栈实现的,应用层不知道
5.如果这个时候程序退出,对方不一定收到数据。
send成功并不能表示已经发送到了对方,
而只能表示已经丢到了本地的发送缓冲区!