Chinaunix首页 | 论坛 | 博客
  • 博客访问: 594055
  • 博文数量: 92
  • 博客积分: 5026
  • 博客等级: 大校
  • 技术积分: 1321
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-28 11:04
文章分类

全部博文(92)

文章存档

2011年(9)

2010年(17)

2009年(12)

2008年(54)

我的朋友

分类: LINUX

2008-04-15 09:37:42

网络编程套接字关闭时的函数,很类似但是也有很大的区别
 
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,大于缓冲区里面的数据,如果是阻塞的就。。。
写情况:缓冲区有空闲,但是要写的数据大于空闲区,如果是阻塞的就。。。
 
 
阅读(983) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~