write函数
- 将数据写入到 TCP 连接中。
- 原型:ssize_t write(int sockfd, const void *buf, size_t count);
-sockfd:TCP Socket 描述符。
-buf:要发送的数据缓冲区。
-count:要发送的字节数。
-返回值:成功时返回实际发送的字节数,出错时返回 -1。当errno为EAGAIN或EWOULDBLOCK时,表明读取完毕,接受缓冲为空,在非阻塞IO下会立即返回-1。若errno不是上述标志,则说明读取数据出错,因该关闭连接,进行错误处理。 返回值ret=0,客户端连接关闭
send函数
- 将数据写入到 TCP 连接中。
- ssize_t send(int sockfd, const void *buf, size_t len, int flags),同步的IO接口;
-sockfd:TCP Socket 描述符。
-buf:要发送的数据缓冲区。
-len:要发送的字节数。
-flags:可选的标志参数,用于控制发送行为,如 MSG_DONTWAIT、MSG_NOSIGNAL 等。
-返回值:成功时返回实际发送的字节数,出错时返回 -1。
sendv函数
- 将多个数据块写入到 TCP 连接中。
- ssize_t sendv(int sockfd, const struct iovec *iov, int iovcnt);
-sockfd:TCP Socket 描述符。
-iov:指向 iovec 结构数组的指针,每个 iovec 结构包含一个数据块的地址和长度。
-iovcnt:iovec 数组中的元素个数。
-返回值:成功时返回实际发送的字节数,出错时返回 -1。
注意 :这些函数在发送数据时都会阻塞,直到所有数据都成功发送或发生错误。可以通过设置套接字为非阻塞模式或使用适当的选项来使这些函数变为非阻塞的。