Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

在Linux系统中,文件和目录的名称以及权限设置中的第一个字符通常用来表示其类型。这个字符是一个单一的字母或符号,用于指示该文件或目录的属性。下面是几种常见的类型及其对应的字符含义:
d:目录。如果文件的第一个字符是d,表示这是一个目录,用于存储其他文件和目录。
l:符号链接(软链接)。如果文件的第一个字符是l,表示这是一个符号链接,它指向另一个文件或目录。
p:命名管道(FIFO)。如果文件的第一个字符是p,表示这是一个命名管道,用于进程间通信。
s:套接字(Socket)。如果文件的第一个字符是s,表示这是一个套接字文件,用于进程间的网络通信。
c:字符设备。如果文件的第一个字符是c,表示这是一个字符设备文件,用于与设备驱动程序进行交互。
b:块设备。如果文件的第一个字符是b,表示这是一个块设备文件,用于与磁盘等块设备进行交互。
这些字符让我们能够快速识别文件类型,以便在使用和管理文件时采取适当的操作和措施。在使用Linux命令行工具时,我们经常会注意到这些字符。
“Linux第一个字符”代表的是当前文件类型的标识符,它可以是以下值之一:d表示目录,-表示文件,l表示链接文件,c表示字符设备文件,b表示块设备文件,s表示套接字文件,p表示命名管道,其中,d代表directory,即目录文件。由此可以看出,Linux第一个字符代表当前文件的类型。
Linux的recv、send函数和read、write函数都可以用于套接字编程。区别:
1、recv、send只用于套接字通信;
2、read、write是底层系统调用,只要是文件操作就都可以用, 比如套接字操作,套接字描述符属于是文件描述符的一种,套接字本身在Linux上就叫做套接字文件。所以read、write函数不光可以用于套接字编程,也可以用于读取其他各种文件,比如用于文件编程读写普通文件。
net.ipv4.tcp_wmem = 4096 16384 4194304net.ipv4.tcp_rmem = 4096 87380 4194304就是说,每个tcp连接的socket,至少需要8k字节,那么对于8G内存的机器,如果不考虑swap等其他因素,最多支持并发100万个tcpsocket