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

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

相关推荐
AI大模型应用之禅2 小时前
全球股市估值与可持续农业垂直种植技术的关系
网络·ai
掘根2 小时前
【仿Muduo库项目】HTTP模块2——HttpRequest子模块,HttpResponse子模块
网络·网络协议·http
MOON404☾5 小时前
006.Backdoor后门编写
网络·安全·网络安全·系统安全
ha20428941945 小时前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
李白你好6 小时前
Burp Suite插件 | 高级HTTP头操作工具
网络·网络协议·http
石像鬼₧魂石6 小时前
22端口(OpenSSH 4.7p1)渗透测试完整复习流程(含实战排错)
大数据·网络·学习·安全·ubuntu
xwj_8655743327 小时前
HTTP协议、接口测试流程、接口测试流程&文档&用例
网络·网络协议·http
RisunJan8 小时前
Linux命令-iptables-restore命令(从文件批量恢复 iptables 防火墙规则)
linux·运维·网络
..过云雨9 小时前
网络计算器实现 - 自定义套接字+序列化+守护进程
网络·网络协议·tcp/ip
三两肉10 小时前
HTTPS ECDHE 握手全解析
网络协议·https·github·rsa·echde