网络编程套接字关闭时的函数,很类似但是也有很大的区别
close 使套接字的访问计数减1,如果为0的话就关闭此套接字(发送fin)
shutdown 始终都会发送fin,而且可以实现半关闭,在某些应用上获得更好的效率
shutdown(fd, SHUT_RD)告诉内核,我绝食了,再有吃的来(数据),不要放我的餐桌上了(接收缓冲区)直接扔给狗吃把。
shutdown(fd, SHUT_WR)内核发送fin给对方数据发送完毕了
得知 shut_RD不发送fin,shut_rw比较主动的发出fin
经过测试,发现close shutdown 等调用是立刻返回的,并不要等到对方确认关闭等等。用本机做测试rtt 是280微妙左右。但是close shutdown只花了 22 微妙就返回了。一切工作都是由内核完成的,跟read write类似。
另外,为什么select时套接字要设置成非阻塞的。
读情况:缓冲区有数据,但是使用的是read_n,大于缓冲区里面的数据,如果是阻塞的就。。。
写情况:缓冲区有空闲,但是要写的数据大于空闲区,如果是阻塞的就。。。
阅读(974) | 评论(0) | 转发(0) |