谈谈TCP Socket中写数据的函数---write、send 、sendv

write函数

  1. 将数据写入到 TCP 连接中。
  2. 原型: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函数

  1. 将数据写入到 TCP 连接中。
  2. 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函数

  1. 将多个数据块写入到 TCP 连接中。
  2. ssize_t sendv(int sockfd, const struct iovec *iov, int iovcnt);
    -sockfd:TCP Socket 描述符。
    -iov:指向 iovec 结构数组的指针,每个 iovec 结构包含一个数据块的地址和长度。
    -iovcnt:iovec 数组中的元素个数。
    -返回值:成功时返回实际发送的字节数,出错时返回 -1。

注意 :这些函数在发送数据时都会阻塞,直到所有数据都成功发送或发生错误。可以通过设置套接字为非阻塞模式或使用适当的选项来使这些函数变为非阻塞的。

相关推荐
XR1234567886 分钟前
连锁多分支办公网络怎么选?统一运维与快速开局是关键
运维·网络·php
zr52685544741 分钟前
光电交换机-三格电子
运维·服务器·网络
huainingning1 小时前
华为oceanstor5310存储单机设备配置
运维·服务器·网络
云絮.1 小时前
网络原理 - UDP
服务器·网络·tcp/ip
xiaoye-duck1 小时前
《Linux 网络编程》应用层自定义协议(一):序列化、sk_buff 与粘包半包处理
linux·网络
专家大圣2 小时前
给自己搭一个 PDF 工具站:Stirling-PDF 部署、格式转换与远程访问实战
网络·pdf·内网穿透
z落落2 小时前
C# WinForm TCP 服务器+WinForm TCP 客户端
服务器·tcp/ip·c#
rcms152702692182 小时前
Advanced Energy 27-368299-00 射频发生器
网络
张小姐的猫2 小时前
【Linux】网络编程 —— 手动部署 & 测试内网穿透
linux·运维·服务器·网络·tcp/ip
有续技术2 小时前
工业网关接入 PLC,为什么要先整理点表?
运维·网络·数据库