linux一切皆文件之tcp socket描述符(三)

 

一、知识准备

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 
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信