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

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

相关推荐
saber_andlibert5 小时前
【docker】网络基础和容器编排
网络·docker·php
Tao____5 小时前
支持mqtt、tcp、udp、websocket、http协议的物联网平台
java·物联网·mqtt·websocket·tcp/ip·udp
雪影风痕5 小时前
华为安全防火墙部署
服务器·网络协议·tcp/ip·网络安全
郝学胜-神的一滴5 小时前
Linux信号四要素详解:从理论到实践
linux·服务器·开发语言·网络·c++·程序人生
阿干tkl5 小时前
CentOS Stream 8 网络绑定(Bonding)配置方案
linux·网络·centos
深眸财经6 小时前
汽水音乐崛起的冷思考:抖音「附属业务」能否自立?
网络
-曾牛6 小时前
CSRF跨站请求伪造:原理、利用与防御全解析
前端·网络·web安全·网络安全·渗透测试·csrf·原理解析
孫治AllenSun7 小时前
【Doris】运维命令
运维·服务器·网络
156082072197 小时前
FPGA(采用RGMII接口)逻辑实现千兆网TCP/IP协议栈调试记录
网络协议·tcp/ip·fpga开发
sdszoe49227 小时前
思科ACL技术基础1
网络·思科acl技术