PR_TransmitFile

通过已连接的套接字发送完整的文件。

语法

#include <prio.h>

PRInt32 PR_TransmitFile(
  PRFileDesc *networkSocket,
  PRFileDesc *sourceFile,
  const void *headers,
  PRInt32 hlen,
  PRTransmitFileFlags flags,
  PRIntervalTime timeout);

参数

该函数具有以下参数

networkSocket

指向一个 PRFileDesc 对象的指针,该对象表示用于发送数据的已连接套接字。

sourceFile

指向一个 PRFileDesc 对象的指针,该对象表示要发送的文件。

headers

指向保存要在发送数据之前发送的报文的缓冲区的指针。

hlen

headers 缓冲区长度(以字节为单位)。

flags

以下标志之一

  • PR_TRANSMITFILE_KEEP_OPEN 指示在发送数据后套接字将保持打开状态。

  • PR_TRANSMITFILE_CLOSE_SOCKET 指示在成功传输文件后应立即关闭连接。

timeout

传输操作完成的时间限制。

返回值

  • 正数表示成功写入的字节数,包括报文和文件。

  • 值 -1 表示失败。如果在发送文件时发生错误,则忽略 PR_TRANSMITFILE_CLOSE_SOCKET 标志。可以通过调用 PR_GetError 获取失败的原因。

描述

PR_TransmitFile 函数通过已连接的套接字 (networkSocket) 发送完整的文件 (sourceFile)。如果 headers 不为 NULLPR_TransmitFile 会在发送文件之前通过套接字发送报文。

flags 参数中使用的枚举 PRTransmitFileFlags 定义如下

typedef enum PRTransmitFileFlags {
  PR_TRANSMITFILE_KEEP_OPEN = 0,
  PR_TRANSMITFILE_CLOSE_SOCKET = 1
} PRTransmitFileFlags;