13.2.5  accept函数

处于监听状态的服务器在获得客户机的连接请求后,会将其放置在等待队列中。当系统空闲时,将接受客户机的连接请求。接收客户机的连接请求使用accept函数,该函数的具体信息如表13.6所示。

表13.6   accept函数

头文件

函数形式int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

返回值成功失败是否设置errno

返回新的套接字文件描述符−1是

说明:

accept函数用于面向连接类型的套接字类型(SOCK_STREAM和SOCK_SEQPACKET)。accept函数将从连接请求队列中获得连接信息,创建新的套接字,并返回该套接字的文件描述符。新创建的套接字用于服务器与客户机的通信,而原来的套接字仍然处于监听状态。

accept函数的sockfd参数为监听的套接字描述符。addr参数为指向结构体sockaddr的指针。参数addrlen为addr参数指向的内存空间的长度。

错误信息:

EAGAIN:套接字处于非阻塞状态,当前没有连接请求。

EBADF:非法的文件描述符。

ECONNABORTED:连接中断。

EINTR:系统调用被信号中断。

EINVAL:套接字没有处于监听状态,或非法的addrlen参数。

EMFILE:达到进程打开文件描述符限制。

ENFILE:达到打开文件数限制。

ENOTSOCK:文件描述符为文件的文件描述符。

EOPNOTSUPP:套接字类型不是SOCK_STREAM。

linux的accept函数源码,accept函数相关推荐

  1. accept函数源码分析

    我们在应用层调的accept函数.在调用这个函数之前我们先拿到socket和sock两个互相关联的结构体,底层执行顺序 1 执行socket.c的sock_accept,分配一个新的socket结构体 ...

  2. 【Linux 内核】实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )

    文章目录 一.dequeue_task_rt 函数 ( 从执行队列中移除进程 ) 二.update_curr_rt 函数 ( 更新调度信息 ) 本篇博客中 , 开始分析 struct sched_cl ...

  3. 【Linux 内核 内存管理】mmap 系统调用源码分析 ④ ( do_mmap 函数执行流程 | do_mmap 函数源码 )

    文章目录 一.do_mmap 函数执行流程 二.do_mmap 函数源码 调用 mmap 系统调用 , 先检查 " 偏移 " 是否是 " 内存页大小 " 的 & ...

  4. 【Linux 内核】实时调度类 ⑥ ( 实时调度类核心函数源码分析 | 插入进程到执行队列 | 从执行队列中选择优先级最高的进程 )

    文章目录 一.enqueue_task_rt 函数 ( 插入进程到执行队列 ) 二.pick_next_task_rt 函数 ( 从执行队列中选择优先级最高的进程 ) 本篇博客中 , 开始分析 str ...

  5. 【Linux 内核 内存管理】物理分配页 ⑨ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | retry 标号代码分析 )

    文章目录 一.retry 标号代码分析 二.retry 标号完整代码 在 [Linux 内核 内存管理]物理分配页 ② ( __alloc_pages_nodemask 函数参数分析 | __allo ...

  6. 【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )

    文章目录 一.__alloc_pages_slowpath 慢速路径调用函数 二.判断页阶数 三.读取进程 mems_allowed 成员 四.分配标志位转换 五.__alloc_pages_slow ...

  7. 【Linux 内核 内存管理】物理分配页 ⑧ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 获取首选内存区域 | 异步回收内存页 | 最低水线也分配 | 直接分配 )

    文章目录 一.获取首选内存区域 二.异步回收内存页 三.最低水线也分配 四.直接分配内存 在 [Linux 内核 内存管理]物理分配页 ② ( __alloc_pages_nodemask 函数参数分 ...

  8. c语言strtok函数源码,C语言_strtok函数源代码分析及扩展

    2019独角兽企业重金招聘Python工程师标准>>> 今天在看strtok函数源码时,发现有点绕,就将源码的处理思想以图示的方式展现给大家,希望可以帮助大家. strtok函数 c ...

  9. OpenCV resize函数源码解析——加速方法

    相信大家应该经常会用到OpenCV中的函数resize(),当我们想放大或者缩小图像的时候,会用到这个函数进行图像缩放,其中最核心的便是对图像的像素进行插值处理. 这里的插值interpolation ...

最新文章

  1. 国内哪里培训python比较好-python培训哪家机构比较好?
  2. Xap packaging failed , Object reference not set to an instance of an object.
  3. Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜
  4. java sftp 实例_JAVA实现SFTP的实例
  5. python的django介绍_【Python基础知识】Django框架简介
  6. IJKMediaFramework框架的集成和使用实例一枚
  7. 魅族17 Pro通过3C认证:魅族史上最强快充
  8. Android 关机流程 从kernel到framework
  9. wamp mysql中文_解决wampServer 中MySQL插入中文乱码问题
  10. 项目管理甘特图模板_甘特图简易制作流程
  11. mid、mif文件转shapefile、geojson等格式的数据
  12. Mysql开发实践:error while loading shared libraries: libaio解决方案
  13. Foundation框架之字符串和日期
  14. 【免费赠送源码】Springboot剧本杀交流分享平台1p7vg计算机毕业设计-课程设计-期末作业-毕设程序代做
  15. win7桌面计算机丢失,windows7电脑系统文件丢失怎么办
  16. 根据输入的银行卡号显示开户银行类型,并将银行卡号四位分隔
  17. js base64加密 java base64解密_JS base64 加密和 后台 base64解密(防止中文乱码)
  18. 【Java】Java中文分词器Ansj的使用
  19. VBA学习(一)启用VBA、变量、常量、静态变量、字符串拼接、循环语句与判断语句
  20. 硅芯思见:“软约束”到底有多“软”

热门文章

  1. 【洛谷比赛】你的名字。
  2. asp.net 使用Master模板页需要注意
  3. Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”(转)
  4. 简单的Client / Server 使用 linux 伯克利 socket实现
  5. NSDateFormatter设定日期格式
  6. 自定义组件--创建mxml组件
  7. Redis之整数集合intset
  8. STL中的multimap---顺便说说如何查找同一关键字对应的所有值
  9. 看完这篇文章,会让你对电容的作用更明白!
  10. 一位跟我一样疑惑的同学~