谈谈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。

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

相关推荐
云飞云共享云桌面43 分钟前
不用批量采购工作站|液压设备制造,SolidWorks 多人共享服务器方案
运维·服务器·网络·数据库·制造
pt10431 小时前
Cisco Splunk for AI Operations:数据处理原理与安全分析
运维·网络·自动化
xixiaoyunya1 小时前
异地备份保管:从概念到落地的完整技术路径
网络·安全
xiaoye-duck1 小时前
《Linux 网络编程》深入理解 TCP 协议(三):TCP 报头六大标志位详解
linux·网络·tcp
华允物联-HUAIOT1 小时前
什么是工业路由器?和普通家用路由器的区别
网络·智能路由器
为思念酝酿的痛1 小时前
应用层协议HTTPS
网络·网络协议·http·https
小程序设计1 小时前
基于某数据管理系统的目标遍历漏洞成因与防御设计技术与实现
运维·网络
Sylvia33.2 小时前
板球实时数据接入实战:从Frames模型到多赛制适配
java·python·websocket·网络协议·架构
anxiao_m2 小时前
局域网文件传输工具有哪些?4款主流工具实测对比测评
大数据·网络·数据库
IPdodo_2 小时前
curl 如何测试代理 IP?HTTP、SOCKS5 与认证参数示例
前端·网络·python·https·网络调试