socket之send和recv原理剖析


1. 认识TCP socket的发送和接收缓冲区

当创建一个TCP socket对象的时候会有一个发送缓冲区和一个接收缓冲区这个发送和接收缓冲区指的就是内存中的一片空间。

2. send原理剖析

send是不是直接把数据发给服务端?

不是,要想发数据,必须得通过网卡发送数据,应用程序是无法直接通过网卡发送数据的,它需要调用操作系统接口,也就是说,应用程序把发送的数据先写入到发送缓冲区(内存中的一片空间),再由操作系统控制网卡把发送缓冲区的数据发送给服务端网卡 

3. recv原理剖析

recv是不是直接从客户端接收数据?

不是,应用软件是无法直接通过网卡接收数据的,它需要调用操作系统接口,由操作系统通过网卡接收数据,把接收的数据写入到接收缓冲区(内存中的一片空间),应用程序再从接收缓存区获取客户端发送的数据

4. send和recv原理剖析图

说明:

  • 发送数据是发送到发送缓冲区
  • 接收数据是从接收缓冲区 获取

5. 小结

不管是recv还是send都不是直接接收到对方的数据和发送数据到对方,发送数据会写入到发送缓冲区,接收数据是从接收缓冲区来读取,发送数据和接收数据最终是由操作系统控制网卡来完成。

socket之send和recv原理剖析相关推荐

  1. 关于SOCKET中send和recv函数工作原理总结

    send函数工作原理: send函数只负责将数据提交给网络协议层. 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SO ...

  2. linux设置send时间,[转]Socket 的send,recv在windows与linux下的超时设置

    从昨天到今天一真在搞这个网络断线检测的问题,一直没搞好,网上大多都说用ping 可以搞定,不过我就是搞不定,没办法之下想了个不是办法的办法,在 服务器上开了一个 UDP端口,监听数据,然后回发,不用T ...

  3. socket编程---send函数recv函数详解

    一.send函数 函数原型:int send( SOCKET s,char *buf,int len,int flags ); 功能:不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端 ...

  4. socket的send、recv阻塞设置阻塞超时时间

    int nNetTimeout=1000;//1秒, //设置发送超时 setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO, (char *)&nNetTimeo ...

  5. Socket中send()函数和recv()函数详解

    目录 1.send函数 2.recv函数 关于socket的send和recv的超时设置 1.send函数 int send( SOCKET s, const char FAR *buf, int l ...

  6. 非阻塞模式下 SEND 和 RECV 函数的返回值总结

    send 和 recv 函数的各种返回值意义: 返回值 n 返回值含义 大于 0 成功发送 n 个字节 0 对端关闭连接 小于 0( -1) 出错或者被信号中断或者对端 TCP 窗口太小数据发不出去( ...

  7. socket api中send()和recv()函数工作原理与要点

    send()和recv()函数是网络编程中经常使用到的函数,下面详细的比较两者的不同之处 send函数工作原理: send函数只负责将数据提交给协议层. 当调用该函数时,send先比较待发送数据的长度 ...

  8. recv原理、高阶版黏包解决方案、基于UDP的socket通信

    recv原理.高阶版黏包解决方案.基于UDP的socket通信 recv原理 源码解释: Receive up to buffersize bytes from the socket. 接收来自soc ...

  9. socket的阻塞模式和非阻塞模式(send和recv函数在阻塞和非阻塞模式下的表现)

    socket的阻塞模式和非阻塞模式 无论是Windows还是Linux,默认创建socket都是阻塞模式的 在Linux中,可以再创建socket是直接将它设置为非阻塞模式 int socket (i ...

最新文章

  1. 安全应用与管理 中国安防下一个十年
  2. java怎么遍历优先级队列_打印优先级队列的内容[java]
  3. java关闭文本_如何更优雅的关闭java文本、网络等资源
  4. n元n次方程求解c 语言,解n元一次方程
  5. 70进货卖100利润是多少_服装批发利润大揭秘!让你拿货砍价心里有个底
  6. android 拉伸view,安卓ImageView拉伸展示
  7. 有了人脸识别和虹膜扫描,指纹传感器是不是就OUT了?究竟哪个更安全?
  8. python if else elif_Python之 if-elif-else
  9. 【 VS 插件开发 】三、Vs插件简单功能的实现
  10. python 可视化界面 打开excel_python如何将excel数据处理可视化
  11. kb2919355无法安装
  12. [AE] ArcGIS Engine处理Landsat8数据
  13. 嘉兴 机器人仓库 菜鸟_双11前菜鸟网络升级智能仓库 浙江嘉兴仓担当大任
  14. 跟我学在高德地图——标注我的位置
  15. 机器数的一些知识点 | 计算机网络
  16. Android面试,给正在找工作的安卓攻城师们 ... ...
  17. CSGO地图制作常见问题
  18. 美年旅游_跟团游_编辑跟团游
  19. 一文教你如何快速实现声音识别
  20. 于推行结构化电子病历,促进卫生行业“四化”管理及医疗信息互联互通的建议...

热门文章

  1. 别找了,Thonny 才是 Python 小白的最理想的 IDE
  2. 新华三发布H3C Workspace数字工作空间:只需一张屏,程序员也能随时随地在云上写代码
  3. iRobot的30年成长史
  4. 找啊找啊找木偶,图灵奖得主G. Hinton第一篇论文曝光!
  5. 都有Python了,还要什么编译器!
  6. AI人才抢夺“生猛”: 应届博士年薪涨到80万元
  7. ICML进行时 | 一文看尽获奖论文及Google、Facebook、微软、腾讯的最新科研成果
  8. AI一分钟|外媒:AI将消灭资本主义;特斯拉再遭唱空:量产存疑外加事故不断...
  9. 一文帮你理解什么是深层置信网络(DBN)
  10. NIPS | 谷歌AI大军来袭,看450多名员工如何横扫今年大会