为何网络断掉后,Send函数还能发送成功
每一个socket有一个协议的缓冲区,你调用send函数的时候,并不是直接将数据发送的网络上,只是拷贝到socket的缓冲区里,然后有协议根据网络的状况自行将数据发送到网络上,如果socket的缓冲区没有满的话,你调用send函数就会成功,如果缓冲区满了,你的调用就是失败,所以,当你把网线拔掉的时候,socket其实还没有死掉,因为socket是每隔一段时间来和相连的socket发送一个消息,如果
·
每一个socket有一个协议的缓冲区,你调用send函数的时候,并不是直接将数据发送的网络上,只是拷贝到socket的缓冲区里,然后有协议根据网络的状况自行将数据发送到网络上,如果socket的缓冲区没有满的话,你调用send函数就会成功,如果缓冲区满了,你的调用就是失败,所以,当你把网线拔掉的时候,socket其实还没有死掉,因为socket是每隔一段时间来和相连的socket发送一个消息,如果连续发送几个消息没有收到回答,才认为对方断开连接的,在这段时间内,你的socket并没有死掉,缓冲区也还在,所以你的send函数依然会发生成功
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)