当前位置:  技术问答>linux和unix

在accept()到receive()这个时间段内缓冲区有没有可能被覆盖或者接受到新数据?

    来源: 互联网  发布时间:2017-04-30

    本文导语:  当我accept一个连接后,貌似真正接受到的数据缓冲在sockfd这个结构对象里,通常需要把sockfd里的缓冲数据通过recv()搬到我自己定义的char* BUF里。问题来了,既然已经建立了连接,如果这个连接工作很忙,TCP通信管道...

当我accept一个连接后,貌似真正接受到的数据缓冲在sockfd这个结构对象里,通常需要把sockfd里的缓冲数据通过recv()搬到我自己定义的char* BUF里。问题来了,既然已经建立了连接,如果这个连接工作很忙,TCP通信管道是源源不断的发来数据包,那我在recv()的过程中sockfd里面缓冲前一段数据有没有可能被后面发来的数据覆盖或者追随(就是str1+str2),不知道底层对缓冲sockfd里的缓冲是如果处理的?

|
没有可能哈, 数据是顺序读到的.

|
接收数据时内核帮我们做好了,当内核协议栈buf接收到就会返回ack,如果buf满了,则不回ack,传输速率减半,发送端会一直重传,所以一般在大流量的情况下,会将接收buf改大

|
tcp不会覆盖的,满了,不会接受的。UDP就会丢数据了。

|
不会的recv都是定长接收数据流的!不会覆盖的!满了就会等待下次接收的!

|
这个和内核双链表什么的,等等都没关系,TCP协议决定的,当满了,会通知发送方,不要发了。等待。
UDP肯定会丢数据的。
而且内核给的缓冲是有限的。可以设置。

|

不会的!没有接收及不及时这说,发送出去了,如果没有得到对方的确认的话,会重新发送数据的!

|
内核采用双向链表来处理数据包,可以动态分配的

|
前面说的都挺好,学习了

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net类httpurlconnection的类成员方法: http_accepted定义及介绍
  • socket accept问题,大家指教。
  • java命名空间java.awt.event类keyevent的类成员方法: vk_accept定义及介绍
  • Accept() 返回0,请问是怎么回事 ?
  • java命名空间java.net类httpurlconnection的类成员方法: http_not_acceptable定义及介绍
  • iptables的默认策略与accept的疑问
  • java命名空间javax.swing类jfilechooser的类成员方法: accept定义及介绍
  • 初学socket,求教关于listen和accept关系的问题。
  • java命名空间java.net接口cookiepolicy的类成员方法: accept_none定义及介绍
  • 请教一个网络编程问题,accept函数的,在线等,急。。。
  • java命名空间java.net接口cookiepolicy的类成员方法: accept_all定义及介绍
  • accept的多线程在这里是如何体现的?
  • java命名空间java.net类socketimpl的类成员方法: accept定义及介绍
  • accept返回-1的原因
  • java命名空间javax.xml.stream接口eventfilter成员方法: accept定义参考
  • accept函数为何返回0???
  • java命名空间java.io接口filefilter的类成员方法: accept定义及介绍
  • 请教LINUX 中 服务端 accept 函数
  • java命名空间javax.xml.stream接口streamfilter成员方法: accept定义参考
  • 为何我close了 accept不立即返回
  • java命名空间java.io接口filenamefilter的类成员方法: accept定义及介绍
  • socket编程select对accept的影响


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,