Linux Socket套接字
来源:互联网 发布:licecap for mac 编辑:程序博客网 时间:2024/06/05 07:49
从设计模式的角度看, Socket其实是一个外观模式,它把复杂的TCP/IP协议栈隐藏在Socket接口后面,对用户来说,一组简单的Socket接口就是全部。当应用程序创建一个socket时,操作系统就返回一个整数作为描述符(descriptor)来标识这个套接字。然后,应用程序以该描述符为传递参数,通过调用函数来完成某种操作(例如通过网络传送数据或接收输入的数据)。以TCP 为例,典型的Socket 使用如下:
在许多操作系统中,Socket描述符和其他I/O描述符是集成在一起的,操作系统把socket描述符实现为一个指针数组,这些指针指向内部数据结构。进一步看,操作系统为每个运行的进程维护一张单独的文件描述符表。当进程打开一个文件时,系统把一个指向此文件内部数据结构的指针写入文件描述符表,并把该表的索引值返回给调用者 。
进程进行Socket操作时,也有着多种处理方式,如阻塞式IO,非阻塞式IO,多路复用(select/poll/epoll),AIO等等。
多路复用往往在提升性能方面有着重要的作用。select系统调用的功能是对多个文件描述符进行监视,当有文件描述符的文件读写操作完成以及发生异常或者超时,该调用会返回这些文件描述符。select 需要遍历所有的文件描述符,就遍历操作而言,复杂度是 O(N)。
epoll相关系统调用是在Linux 2.5 后的某个版本开始引入的。该系统调用针对传统的select/poll不足,设计上作了很大的改动。select/poll 的缺点在于:
每次调用时要重复地从用户模式读入参数,并重复地扫描文件描述符。
每次在调用开始时,要把当前进程放入各个文件描述符的等待队列。在调用结束后,又把进程从各个等待队列中删除。
- Linux Socket套接字
- 【Linux基础】套接字socket
- linux socket套接字理解
- Linux - Socket网络套接字
- Linux下套接字详解(二)----套接字Socket
- socket —— Linux套接字接口
- Linux Socket学习 -- 无名套接字 AF_UNIX
- linux进程间通信--socket套接字
- linux进程间通信--socket套接字
- linux进程间通信--socket套接字
- linux socket套接字超时之setsockopt
- linux 管道传递socket套接字
- linux socket套接字超时之setsockopt
- Linux _ socket 文件系统套接字
- Linux C 套接字socket UDP
- Linux C 套接字socket select
- linux网络socket套接字介绍
- Socket(套接字)
- LeetCode-35. Search Insert Position
- 优化MySchool 数据库设计 第二章 上机
- 死后的灵魂,如何看待生前的人生
- 如何快速转载CSDN中的博客
- js 导出excel,设置下载的标题
- Linux Socket套接字
- mysql忘记密码修改方法
- 如何搭建局域网共享文件
- C++:STL标准入门汇总
- 整理图书
- deepLink iOS 应用到自己APP 记录
- Cohen-Sutherland直线段的裁剪算法
- Linux网络配置及SecureCRT终端的使用
- 【Python】BeautifulSoup使用