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

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

相关推荐
学编程的小程1 小时前
无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战
linux·windows·tcp/ip
9稳2 小时前
基于单片机的智能楼宇门禁系统设计
网络·单片机·嵌入式硬件
网络安全指导员3 小时前
kali linux 漏洞扫描
linux·运维·开发语言·网络·安全·web安全
Yan-英杰3 小时前
使用阿里云操作系统控制台排查内存溢出
开发语言·python·tcp/ip·阿里云·云计算·deepseek
写完这行代码打球去4 小时前
为什么大模型网站使用 SSE 而不是 WebSocket?
网络·websocket·网络协议
起床学FPGA4 小时前
wireshark点击快捷无法打开
网络·测试工具·wireshark
Wlq04154 小时前
计算机网络概述
网络·计算机网络
q567315235 小时前
用Haskell语言和wreq库配合HTTP写个爬虫程序
爬虫·网络协议·http
book01215 小时前
简单以太网配置
网络·智能路由器
煲冬瓜的程序猿5 小时前
BGP实验(一)IBGP全互联配置
网络·网络协议