一、Socket
1.1 文件描述符详解
- 文件描述符是在操作系统层面用来访问文件或I/O资源(如网络套接字)的一个抽象的、非负整数。每个进程在打开一个文件或创建一个套接字时,都会得到一个唯一的文件描述符。
- 在Unix/Linux系统中,标准输入(stdin)、标准输出(stdout)和标准错误(stderr)默认对应的是0, 1, 2这三个文件描述符。
- 文件描述符是内核用来追踪每一个打开文件的数据结构的一部分,用户空间程序通过这些描述符来执行读写操作。
1.2 Socket与文件描述符之间的关系
- 当使用socket API创建一个新的套接字时,实际上是在操作系统中分配了一个新的文件描述符给这个套接字。
- 套接字可以像普通文件一样被读写,因此可以通过文件描述符进行数据传输。例如,在C语言中,
read()
和write()
函数既可以用于常规文件也可以用于套接字。
1.3 Socket与TCP之间的关系
- Socket 是一种通信机制,它提供了一种