终止TCP连接时close()和shutdown()的区别

来源:互联网 发布:java 获取运行时路径 编辑:程序博客网 时间:2024/04/28 22:42
  1. shutdown可以指定在某个方向上终止连接,通过指定标志:SHUT_RD, SHUT_WR, SHUT_RDWR。比如指定SHUT_WR后可以继续读数据,但不能写入了。而close是两个方向上终止连接。
  2. close会将描述符的引用计数减一,如果引用计数变为0就关闭描述符,发送FIN。而shutdown不管引用计数,直接发送FIN终止连接。所以在多线程下操作同一个socket描述符下,一个线程调用shutdown会使其他线程无法使用这个描述符,而调用close就不会影响到其他线程。
原创粉丝点击