社区
网络编程
帖子详情
TCP协议send返回表示什么意思?
myqoo
2011-05-02 02:29:19
tcp协议里,同步模式的socket,send返回表示数据写入协议,还是成功发送出网卡,还是对方已经收到数据,并且返回ACK应答。到底是那种呢?谢谢指教
...全文
901
8
打赏
收藏
TCP协议send返回表示什么意思?
tcp协议里,同步模式的socket,send返回表示数据写入协议,还是成功发送出网卡,还是对方已经收到数据,并且返回ACK应答。到底是那种呢?谢谢指教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xun_jing
2011-05-02
打赏
举报
回复
send函数
int send(
SOCKET s,
const char FAR *buf,
int len,
int flags
);
不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置0。这里只描述同步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)
注意:在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个 SIGPIPE信号,进程对该信号的默认处理是进程终止。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xun_jing/archive/2010/03/17/5387540.aspx
Sou2012
2011-05-02
打赏
举报
回复
对应的TCP 接收函数 recv,
UPD中是 sendto、recvfrom
Sou2012
2011-05-02
打赏
举报
回复
send就是发送数据。
fish_phenix
2011-05-02
打赏
举报
回复
send只是表示 将要发送的数据写入本机的发送队列,send成功表示写入队列成功,但发送队列的数据未必马上发送出去,要看队列前面有没有其他数据
我们send只能操作到写入队列,真正发送的操作是操作系统自己完成的,这个有它自己的策略。两者甚至都不需要互斥的
lijianli9
2011-05-02
打赏
举报
回复
SEND表示本次提交的buffer中发送的字节数,但不代表对方已经成功接收到。
chenjiawei007
2011-05-02
打赏
举报
回复
send返回的仅仅是发送出去数据的字节数
myqoo
2011-05-02
打赏
举报
回复
不是说了同步的阻塞模式了
vcf_reader
2011-05-02
打赏
举报
回复
这个取决于通讯模式是阻塞/非阻塞模式
高薪程序员&面试题精讲系列79之
TCP
与UDP有什么区别?JDBC
协议
属于
TCP
还是UDP
协议
?
一. 面试题及剖析 1. 今日面试题
TCP
与UDP
协议
有什么区别? 你了解JDBC
协议
吗? JDBC
协议
属于
TCP
协议
还是UDP
协议
? 2. 题目剖析 从本篇文章开始,壹哥会给大家分析讲解关系型数据库相关的面试题。大家要切记,数据库相关的面试题,是我们后端程序员面试时的必考题目,几乎去每一家公司面试时,数据库都是必问必考的内容,可以说数据库内容被考察的概率几乎为100%。所以接下来的十几篇文章,大家一定要好好的掌握和理解。 我们数据库相关的面试题,会从数据库常用的JDBC
协议
开始讲起。其
什么是
TCP
协议
?
TCP
(Transmission Control Protocol 传输控制
协议
)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层
协议
。
TCP
在IP报文的
协议
号是6。
TCP
是一个超级麻烦的
协议
,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型:我们需要知道
TCP
工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,A...
什么是
TCP
协议
TCP
(Transmission Control Protocol 传输控制
协议
)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层
协议
。
TCP
在IP报文的
协议
号是6。
TCP
是一个超级麻烦的
协议
,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型: 我们需要知道
TCP
工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP 在第二层——Data Link层;在第二层上的数据,我们把它叫Frame,在第三层上的数据叫Pack.
深入理解
TCP
、UDP
协议
及两者的区别
一、
TCP
协议
: 位于传输层, 提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service) 是指, 为了方便传输, 将大块数据分割成以报文段(segment) 为单位的数据包进行管理。 而可靠的传输服务是指, 能够把数据准确可靠地传给对方。 即
TCP
协议
为了更容易传送大数据才把数据分割, 而且
TCP
协议
能够确认数据最终是否送达到对方。所以,
TCP
连接相当于两根管道(一...
Python网络编程之
TCP
协议
(二)
网络编程是现代软件开发中不可或缺的一部分。无论是构建Web应用程序、移动应用后端,还是进行分布式系统开发、物联网设备通信,都离不开网络编程技术。在众多网络
协议
中,
TCP
(Transmission Control Protocol,传输控制
协议
)以其可靠性、面向连接的特性,成为应用最广泛的
协议
之一。Python作为一门功能强大且易于学习的编程语言,提供了丰富的网络编程库,使得开发者能够轻松地构建基于
TCP
协议
的网络应用。
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章