background image

accept(接受 socket 连线)

  相关函数  socket,bind,listen,connect

  表头文件  #include<sys/types.h>

  #include<sys/socket.h>

  定义函数  int accept(int s,struct sockaddr * addr,int * addrlen);

  函数说明  accept()用来接受参数 s 的 socket 连线。参数 s 的 socket 必需先经
bind()、listen()

 

函数处理过,当有连线进来时 accept()会返回一个新的 socket 处理代

码,往后的数据传送与读取就是经由新的 socket 处理,而原来参数 s 的 socket 能继续

 

使用 accept()来接受新的连线要求。连线成功时,参数 addr 所指的结构会被系统填入远
程主机的地址数据,参数 addrlen 为 scokaddr 的结构长度。关于结构 sockaddr 的定义
请参考 bind()。

  返回值  成功则返回新的 socket 处理代码,失败返回-1,错误原因存于 errno 中。

  错误代码  EBADF 参数 s 非合法 socket 处理代码。

  EFAULT 参数 addr 指针指向无法存取的内存空间。

  ENOTSOCK 参数 s 为一文件描述词,非 socket。

  EOPNOTSUPP 指定的 socket 并非 SOCK_STREAM。

  EPERM 防火墙拒绝此连线。

  ENOBUFS 系统的缓冲内存不足。

  ENOMEM 核心内存不足。

  范例  参考 listen()。

  bind(对 socket 定位)

  相关函数  socket,accept,connect,listen

  表头文件  #include<sys/types.h>

  #include<sys/socket.h>

  定义函数  int bind(int sockfd,struct sockaddr * my_addr,int addrlen);