首页 > 其他分享 >文件描述符fd

文件描述符fd

时间:2023-10-21 13:55:36浏览次数:27  
标签:文件 通信 描述符 fd 缓冲区 数据 客户端

目录

    • 在tcp的服务器端, 有两类文件描述符

      • 监听的文件描述符
        只需要有一个
        不负责和客户端通信, 负责检测客户端的连接请求, 检测到之后调用accept就可以建立新的连接
      • 通信的文件描述符
        负责和建立连接的客户端通信
        如果有N个客户端和服务器建立了新的连接, 通信的文件描述符就有N个,每个客户端和服务器都对应一个通信的文件描述符
    • 文件描述符对应的内存结构:
      一个文件文件描述符对应两块内存, 一块内存是读缓冲区, 一块内存是写缓冲区
      读数据: 通过文件描述符将内存中的数据读出, 这块内存称之为读缓冲区
      写数据: 通过文件描述符将数据写入到某块内存中, 这块内存称之为写缓冲区

    • 监听的文件描述符:
      客户端的连接请求会发送到服务器端监听的文件描述符的读缓冲区中
      读缓冲区中有数据, 说明有新的客户端连接
      调用accept()函数, 这个函数会检测监听文件描述符的读缓冲区
      检测不到数据, 该函数阻塞
      如果检测到数据, 解除阻塞, 新的连接建立

    • 通信的文件描述符:
      客户端和服务器端都有通信的文件描述符
      发送数据:调用函数 write() / send(),数据进入到内核中
      数据并没有被发送出去, 而是将数据写入到了通信的文件描述符对应的写缓冲区中
      内核检测到通信的文件描述符写缓冲区中有数据, 内核会将数据发送到网络中
      接收数据: 调用的函数 read() / recv(), 从内核读数据
      数据如何进入到内核程序猿不需要处理, 数据进入到通信的文件描述符的读缓冲区中
      数据进入到内核, 必须使用通信的文件描述符, 将数据从读缓冲区中读出即可

    标签:文件,通信,描述符,fd,缓冲区,数据,客户端
    From: https://www.cnblogs.com/liviayu/p/17778870.html

    相关文章

    • springboot 配置文件元数据
      springboot配置文件元数据1.spring-configuration-metadata.json{"groups":[{"name":"management.appoptics.metrics.export","type":"org.springframework.boot.actuate.autoconfigure.metrics.export.app......
    • docker cp 命令 - 宿主机与容器互相拷贝文件
      一、从容器拷贝文件到宿主机命令格式:$dockercp<containder-id>:/path/host/path例子:$dockercpc9b7f17d43e9:/opt/hello.txt/home/hello.txt二、从宿主机拷贝文件到容器命令格式:$dockercp/host/path<containder-id>:/path例子:$dockercp/home/hel......
    • 详解vue大文件视频切片上传的处理方法
      前端上传大文件、视频的时候会出现超时、过大、很慢等情况,为了解决这一问题,跟后端配合做了一个切片的功能,接下来就详细的给大家介绍一下vue大文件视频切片上传的处理方法,需要的朋友可以参考下 前端上传大文件、视频的时候会出现超时、过大、很慢等情况,为了解决这一问题,跟......
    • makefile学习记录 :一个工程里有多个makefile 如何make根目录下的makefile 调用子目录
      注:本文个人学习记录目的:一个工程里有多个makefile如何make根目录下的makefile调用子目录下的makefile,编译所有.c文件如图所示目录结构,根目录server:makefile;子目录so:makefile  根目录makefile:GCC=gccAPP=server ALL_C=$(wildcard./*.c)C_OBJ=$(notdir$......
    • java基础漏洞学习----文件操作漏洞
      java基础漏洞学习----文件操作漏洞前置基础知识https://www.cnblogs.com/thebeastofwar/p/17760812.html文件上传漏洞文件上传的方式1.通过文件流index.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOC......
    • 上传超大文件到云端服务器
      一直以来,通过互联网传送超大文件都是个麻烦事,传统的SSH/FTP工具只适合传输不太大的文件和目录,遇到上G的文件经常会出现传输错误,常用手段如百度云在Linux服务器上没法使用,一些专业传输软件需要在服务端安装开端口,而我们日常遇到的超大文件越来越多,linux的安装包要几个G,docker镜像要......
    • 打开本地html文件+文件路径
      打开本地html文件+文件路径打开本地html文件一、文件目录1、方法使用os库 importos ​ #文件绝对路径,含文件名 print(os.path.realpath(__file__)) print(os.path.abspath(__file__)) ​ #os.path.dirname(path):获取path路径的上级路径 print(os.path.dirname(os.pa......
    • php提高文件上传速度
      PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off是否允许通过http方式上传文件2.max_execution_time=30允许脚本最大执行时间,超过这个时间就会报错3.memory_limit=50M设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此指令只有在编译......
    • [转] VSCode中 Vetur插件排版Vue文件 Col 标签子标签不被缩进的问题 iview viewDesign
      [转]VSCode中Vetur插件排版Vue文件Col标签子标签不被缩进的问题iviewviewDesign自动格式化问题Col标签不对齐首先直接放解决办法在vsCodesettings.json中添加{//缩进大小,自行按需配置"vetur.format.options.tabSize":4,"vetur.format.defaultFo......
    • 卷影副本(Volume Shadow Copy)是Windows操作系统提供的一项备份和恢复功能。它允许在文
      卷影副本(VolumeShadowCopy)是Windows操作系统提供的一项备份和恢复功能。它允许在文件被修改或删除之前,创建文件或文件夹的副本,以便在需要时进行数据的还原和恢复。卷影副本主要有以下作用和优势:数据保护和恢复能力:卷影副本可以保护用户的数据免受意外的文件修改、删除和损坏......