首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Networks 12 - 判断TCP包是否发送成功

Networks 12 - 判断TCP包是否发送成功

作者头像
Reck Zhang
发布于 2021-08-11 12:00:50
发布于 2021-08-11 12:00:50
2K0
举报
文章被收录于专栏:Reck ZhangReck Zhang

判断TCP包是否发送成功

send()

对发送端而言, 用户空间调用send(data)等发送接口将数据发送, 内核会将data拷贝到内和空间的socket对应的缓冲中, 而send()函数的返回值仅仅是表示本次send()调用中成功拷贝的字节数, 具体的发送和接收端的接收就由TCP协议完成.

判定是否接收成功

  1. 查看接收端是否回复应答消息.
  2. 计算发送端socket已发送数量, 利用接口ioctl(tcp_socket, SIOCOUTQ, &value).

TCP与UDP

经过UDP封装后的数据称为UDP数据包, UDP对应用程序数据的封装与TCP类似. 不同的是, UDP无需为应用层数据保存副本, 因为它提供的是不可靠服务, 发送后就会在内核空间的缓冲区中删除. 如果应用程序检测到该数据报未被接收端正确接收, 并打算重发这个包, 就需要应用程序重新通过用户空间将数据拷贝到内核的UDP发送缓冲区.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 判断TCP包是否发送成功
    • send()
    • 判定是否接收成功
    • TCP与UDP
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档