listen&accept函数
listen&accept函数
小绿豆蛙 发表于4年前
listen&accept函数
  • 发表于 4年前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: listen函数用途、accept函数

listen:

在服务器端bind socket的fd之后会call一个listen函数,这个函数有什么作用:

这个函数说明客户端连接请求队列能容纳的连接数,当server一个个的处理连接时候可能会同时又有其他连接请求,TCP链接是个过程,可能存在半链接状态,如果链接太多就会有链接未能及时处理的请求,那么这些个请求就被放到一个队列中去,等待处理。那这个队列不能无限大所以用listen说明这个准备好的队列可以最多容纳多少个连接数,当然这个数值的设定在系统设置的范围内,一般小于30。当一次性爆发100个请求,而listen函数设置为5那么也就只有5个请求可能保持在队列里等候处理。

accept:

这个函数会把上面listen过的fd作为参数,这个函数在内核中首先创建一个新的struct socket然后复制fd中的部分信息,这时候socket里面已经有刚刚listen的队列了,首先先检测socket的监听状态,然后检测请求队列是不是NULL,如果不是NULL,取出第一个处理,如果为NULL那就睡觉休息直到有请求进来把它唤醒。他主要就看守请求队列。

共有 人打赏支持
粉丝 0
博文 30
码字总数 13280
×
小绿豆蛙
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: