hur.cn - 华软网

 热门搜索

CSocket::Send 函数返回值是否表示确实发出去的字节数

  作者:未知    来源:网络    更新时间:2011/5/19
RT ,同步的TCP通讯

比如返回一个50,是否表示50个字节的数据确实发到了SOCKET缓冲区还是确实发到了对方计算机.
---华软 网友回答---
缓冲区
---华软网友回复---
当然不是,表示TCP驱动已经确认你提交的50字节数据到发送窗口,这是个完全异步的过程,发送窗口数据的发送由TCP驱动控制输出到更低层的设备驱动比如网卡
---华软网友回复---
引用 2 楼 wocow3 的回复:
当然不是,表示TCP驱动已经确认你提交的50字节数据到发送窗口,这是个完全异步的过程,发送窗口数据的发送由TCP驱动控制输出到更低层的设备驱动比如网卡


我做了一个测试,当代码运行到SEND函数时,我关掉服务端程序,接着继续运行SEND函数,此时马上返回-1,不知道这个现象该怎么解释
---华软网友回复---
引用 3 楼 xxfxiazai 的回复:
引用 2 楼 wocow3 的回复:
当然不是,表示TCP驱动已经确认你提交的50字节数据到发送窗口,这是个完全异步的过程,发送窗口数据的发送由TCP驱动控制输出到更低层的设备驱动比如网卡


我做了一个测试,当代码运行到SEND函数时,我关掉服务端程序,接着继续运行SEND函数,此时马上返回-1,不知道这个现象该怎么解释

关掉服务器系统而不是用closesocket断开连接,程序退出时系统会检查到还有未关闭的socket,这时会对每个socket发出reset报文,对方接收到reset后知道连接已不可用,send返回-1
---华软网友回复---
是的。返回值就是实际发出去的数据。这是由CSocket的特点决定的。
---华软网友回复---
引用 2 楼 wocow3 的回复:
当然不是,表示TCP驱动已经确认你提交的50字节数据到发送窗口,这是个完全异步的过程,发送窗口数据的发送由TCP驱动控制输出到更低层的设备驱动比如网卡


=============
自己不懂就不要误导别人
---华软网友回复---
返回值就是实际发出去的数据。 返回-1是因为服务器关闭后 TCP连接断开,此时你send当然会出错。。。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。