Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1398418
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: LINUX

2014-10-09 23:43:29

     tcp/ip中的连接的状态都是保存在内核中,只能通过命令netstat去查看
     tcp/ip中accept执行之时,此时连接的状态已经是established,accept只是从established_queue中取出这个连接,当然还有一个sync_rcvd的状态的queue,这个队列的容量就是backlog
     tcp/ip中的连接状态是没有办法通过socket层的api来获知的,及时发送成功也不表示连接是正常的
    针对连接的异常,只能通过event来判定,如:epollhup,连接是否已经断开。
    针对数据接收和发送,只能通过recv的返回值和errorno的值来确定,如:EAGAIN,EWOULDBLOCK,EINTR等
     tcp/ip中的发送和接收缓冲区都是只存储了数据部分,协议头基本没有机会看到,除非是在链路层的嗅探器或者原始套接字这种,才能拿到这些包信息
     tcp/ip的可靠编程中需要注意tcp/ip中的连接的状态机,知道连接所处的状态
     高并发编程模型中,需要将listen和accept与send和recv分离开来,以实现并发连接数和并发请求的快速响应
阅读(1039) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~