PR_AcceptRead

接受新连接并接收数据块。

语法

#include <prio.h>

PRInt32 PR_AcceptRead(
  PRFileDesc *listenSock,
  PRFileDesc **acceptedSock,
  PRNetAddr **peerAddr,
  void *buf,
  PRInt32 amount,
  PRIntervalTime timeout);

参数

该函数具有以下参数

listenSock

指向一个 PRFileDesc 对象的指针,该对象表示一个已使用 PR_Listen 函数调用的套接字描述符,也称为会合套接字。

acceptedSock

指向一个指向 PRFileDesc 对象的指针的指针。返回时,*acceptedSock 指向新连接套接字的 PRFileDesc 对象。此参数仅在函数返回值不指示失败时有效。

peerAddr

指向一个指向 PRNetAddr 对象的指针的指针。返回时,peerAddr 指向远程套接字的地址。 peerAddr 指向的 PRNetAddr 对象将位于 buf 指向的缓冲区中。此参数仅在函数返回值不指示失败时有效。

buf

指向一个缓冲区的指针,用于保存对等方发送的数据和对等方的地址。此缓冲区必须足够大,以接收 amount 字节的数据和两个 PRNetAddr 结构(从而允许运行时根据需要对齐地址)。

amount

要接收的数据的字节数。不包括 PRNetAddr 结构的大小。如果为 0,则不会从对等方读取任何数据。

timeout

超时间隔仅适用于操作的读取部分。 PR_AcceptRead 会无限期阻塞,直到连接被接受;读取将在超时间隔过后超时。

返回值

  • 正数表示从对等方读取的字节数。

  • 值 -1 表示失败。可以通过调用 PR_GetError 获取失败的原因。

描述

PR_AcceptRead 接受新连接并检索新创建套接字的描述符和连接对等方的地址。此外,顾名思义,PR_AcceptRead 会接收对等方发送的第一块数据。