一、知识准备
1、在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列)
2、操作这些不同的类型就像操作文件一样,比如增删改查等
二、环境准备
| 组件 | 版本 |
|---|---|
| OS | CentOS Linux release 7.5.1804 |
三、tcp socket 文件描述符
● 当我们建立一条TCP连接时,在linux操作系统中会创建一个socket文件描述符
● 通过文件描述符就能找到socket的几本信息,比如TCP四元组(client-ip:client-port --> server-ip:server-port)
先准备2个脚本:
server.py主要用于建立客户端的连接请求,并且接收客户端传来的数据,然后将收到的数据回传给客户端
client.py每隔1秒向服务端发送一次'hello world'
server.py
import socket server_addr = ('127.0.0.1' , 22222) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(server_addr) sock.listen(5) while True: conn, clientAddr = sock.accept() while True: data = conn.recv(100) conn.sendall(data) sock.close()client.py
import socket import time server_addr = ('127.0.0.1' , 22222) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(server_addr) while True: message = 'hello world!' sock.send(message) sock.recv(100) time.sleep(1) sock.close()
分别启动server.py与client.py
[root@localhost ~]# python /tmp/server.py & [1] 14199 [root@localhost ~]# python /tmp/client.py & [2] 14202查看server.py打开的文件描述符
[root@localhost ~]# ls -l /proc/14199/fd total 0 lrwx------ 1 root root 64 Nov 7 07:42 0 -> /dev/pts/0 lrwx------ 1 root root 64 Nov 7 07:42 1 -> /dev/pts/0 lrwx------ 1 root root 64 Nov 7 07:42 2 -> /dev/pts/0 lrwx------ 1 root root 64 Nov
