PR_Accept

在指定的套接字上接受连接。

语法

#include <prio.h>

PRFileDesc* PR_Accept(
  PRFileDesc *fd,
  PRNetAddr *addr,
  PRIntervalTime timeout);

参数

该函数具有以下参数

fd

指向一个 PRFileDesc 对象的指针,该对象表示调用方愿意在其上接受新连接的会合套接字。

addr

指向类型为 PRNetAddr 的结构体的指针。在输出时,此结构体包含连接实体的地址。

timeout

类型为 PRIntervalTime 的值,指定接受操作完成的时间限制。

返回值

该函数返回以下值之一

  • 成功接受连接后,指向一个新的 PRFileDesc 结构体的指针,该结构体表示新接受的连接。

  • 如果失败,则返回 NULL。可以通过调用 PR_GetError 获取更多信息。

描述

套接字 fd 是一个会合套接字,已使用 PR_Bind 绑定到地址,并在调用 PR_Listen 后侦听连接。 PR_Accept 接受来自挂起连接队列的第一个连接,并为新接受的连接创建一个新的套接字。会合套接字仍然可以用于接受更多连接。

如果 addr 参数不是 NULL,则 PR_Accept 将连接实体的地址存储在 addr 指向的 PRNetAddr 对象中。

PR_Accept 会阻塞调用线程,直到成功接受新连接或发生错误。如果 timeout 参数不是 PR_INTERVAL_NO_TIMEOUT,并且在时间限制之前无法接受任何挂起的连接,则 PR_Accept 返回 NULL,错误代码为 PR_IO_TIMEOUT_ERROR