本文主要是介绍谈谈TCP Socket中写数据的函数---write、send 、sendv,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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。
注意 :这些函数在发送数据时都会阻塞,直到所有数据都成功发送或发生错误。可以通过设置套接字为非阻塞模式或使用适当的选项来使这些函数变为非阻塞的。
这篇关于谈谈TCP Socket中写数据的函数---write、send 、sendv的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!