zoukankan      html  css  js  c++  java
  • send()/ recv() 和 write()/ read()

    Linux下数据的接收和发送write()/ read()

    Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据。

    两台计算机之间的通信相当于两个套接字之间的通信,在服务器端用 write() 向套接字写入数据,客户端就能收到,然后再使用 read() 从套接字中读取出来,就完成了一次通信。

    write() 的原型为:

    write() 函数会将缓冲区 buf 中的 nbytes 个字节写入文件 fd,成功则返回写入的字节数,失败则返回 -1。

    ssize_t write(int fd, const void *buf, size_t nbytes);

    fd 为要写入的文件的描述符

    buf 为要写入的数据的缓冲区地址

    nbytes 为要写入的数据的字节数

    size_t 是通过 typedef 声明的 unsigned int 类型;ssize_t 在 "size_t" 前面加了一个"s",代表 signed,即 ssize_t 是通过 typedef 声明的 signed int 类型。

    read() 的原型为:

    read() 函数会从 fd 文件中读取 nbytes 个字节并保存到缓冲区 buf,成功则返回读取到的字节数(但遇到文件结尾则返回0),失败则返回 -1。

    ssize_t read(int fd, void *buf, size_t nbytes);

    fd 为要读取的文件的描述符

    buf 为要接收数据的缓冲区地址

    nbytes 为要读取的数据的字节数

    所以,文件

    读:文件 → 缓冲区

    写:缓冲区 → 文件

    Windows下数据的接收和发送send()/ recv()  

  • 相关阅读:
    Oracle分页SQL
    CentOS7下安装Anaconda3
    Alibaba分层领域模型规约
    java的continue标签
    SQLserver 及 redis 无法连接问题
    HTTP状态码
    java命令功能
    sql 查询结果自增序号
    Viewpage实现左右无限滑动
    Android OOM 问题的总结
  • 原文地址:https://www.cnblogs.com/zgqcn/p/10900808.html
Copyright © 2011-2022 走看看