同步Socket的send函数的执行流程(转)
来源:互联网 发布:什么是win10 ump软件 编辑:程序博客网 时间:2024/06/07 17:02
这里只描述同步Socket的send函数的执行流程。当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲
的 长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区的长度,
那么send先检查协议 是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的
发送缓冲中的数据或者s的发送缓冲中没有数据,那么 send就比较s的发送缓冲区的剩余空间和len,如果len大于剩余空间
大小send就一直等待协议把s的发送缓冲中的数据发送完,如果len小于剩余 空间大小send就仅仅把buf中的数据copy到剩
余空间里(注意并不是send把s的发送缓冲中的数据传到连接的另一端的,而是协议传的,send仅仅是把buf中的数据copy
到s的发送缓冲区的剩余空间里)。如果send函数copy数据成功,就返回实际copy的字节数,如果send在copy数据时出现
错误,那么send就返回SOCKET_ERROR;如果send在等待协议传送数据时网络断开的话,那么send函数也返回
SOCKET_ERROR。
要注意send函数把buf中的数据成功copy到s的发送缓冲的剩余空间里后它就返回了,但是此时这些数据并不一定马上被传
到连接的另一端。如 果协议在后续的传送过程中出现网络错误的话,那么下一个Socket函数就会返回SOCKET_ERROR。
(每一个除send外的Socket函数在执 行的最开始总要先等待套接字的发送缓冲中的数据被协议传送完毕才能继续,如果在
等待时出现网络错误,那么该Socket函数就返回 SOCKET_ERROR)
- 同步Socket的send函数的执行流程(转)
- 同步Socket Send执行流程
- SOCKET的send recv流程
- Socket的send函数在执行时报EAGAIN的错误
- Socket的send()与recv()函数
- socket的send和recv函数详解
- Socket中send函数的理解(一)
- Socket中send函数的理解(一)
- Socket中send函数的理解
- Socket中send函数的理解
- socket中send函数和recv函数的理解
- 浅谈SOCKET-TCP编程中send函数的机制
- socket网络编程中send函数的解析
- socket中read、write、send、recv函数的比较
- socket中read、write、send、recv函数的比较
- socket中read、write、send、recv函数的比较
- socket中read、write、send、recv函数的比较
- socket中read、write、send、recv函数的比较
- Collections.rotate()源码
- 40 位改变了互联网的人(下)哦
- .net中IDBDataAdapter和IDataAdapter有什么区别
- 如何用虚拟机装ghost xp,(图文并茂!)-----------2
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterF
- 同步Socket的send函数的执行流程(转)
- Spring 3 ehcache -spring-annotations 配置过程.
- VMWARE的完美上网
- c# winform 程序打包部署
- 地理坐标、经纬度坐标与屏幕坐标的转换!
- 【转】UBI文件系统
- File System Filter Driver Tutorial
- android学习 一
- 如何用虚拟机装ghost xp,(图文并茂!)-----------1