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

writev函数发信导致客户端程序中止问题

    来源: 互联网  发布时间:2016-04-29

    本文导语:  想问网络通信高手们一个问题 如果我调用writev函数客户端给服务端发信,但是服务端我设置一直拒绝接受,并且不切断通信socket。那么客户端发的信息会一直成功的发到socket上,但是服务器端则会丢失。 如果这种...

想问网络通信高手们一个问题

如果我调用writev函数客户端给服务端发信,但是服务端我设置一直拒绝接受,并且不切断通信socket。那么客户端发的信息会一直成功的发到socket上,但是服务器端则会丢失。

如果这种情况一直持续下去,会导致writev函数返回什么错误,或者收到什么中止的信号么?客户端发的信息会一直存在socket上,一直到缓冲区满么?

|
我这个菜鸟尝试回答一下

 
如果是TCP的话,你可以用tcpdump看看 ,可以预料的是 服务器 一旦自己的recvbuf满了之后 但应用程序没有接受recvbuf的数据  则会 ack当前 数据报 但是 advertised window 为0  而客户端收到此报文后 不会再发送带有数据的数据报 而是 启动1个坚持定时器 根据指数退避的算法 开始以 5 12 24秒等等 发送探查报文 了解另一端的 advertised window的大小。 并且一直不间断(和超时重传有点不同)
程序会 hang在writev调用上 除非你设置了 O_NONBLOCK

如果是UDP的话 我想客户端不会关心 server端收到情况 继续发 除非你在应用程序里加了 自己规定的协议。所以,

程序 运行正常。

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 关于writev函数
  • 问一个Linux网络编程中writev和readv函数的问题?
  • 问下网络编程中使用readv和writev~~
  • 用accept系统调用得到的socket能用在readv和writev上吗?


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3