prefacio
Ayer expliqué por primera vez cómo comenzar con Python desde cero y el contenido obligatorio de la gramática de programación, como comenzar con Python3, listas y tuplas, cadenas, diccionarios, condiciones, bucles y otras declaraciones, funciones, orientadas a objetos, excepciones y procesamiento de archivos
1. Aprenda Python desde cero conmigo (1) Gramática de programación obligatoria
Hoy hablaré de la segunda parte: programación concurrente de Python: programación de red
Esta serie de artículos se basa en las siguientes rutas de aprendizaje: debido al gran contenido: aprender Python desde cero hasta la hoja de ruta avanzada avanzada
Preste atención a la cuenta oficial: campo de entrenamiento de tecnología Python , aprenda avanzado paso a paso
Recursos de Python adecuados para el aprendizaje de base cero y personas avanzadas:
① PDF con notas del tutorial práctico del proyecto completo de Python certificado por Tencent
② PDF con temas de entrevistas sobre Python de más de una docena de fabricantes importantes
③ Conjunto completo de tutoriales en video de Python (JS avanzado avanzado y sin fundamentos)
④ Cientos de proyectos reales de combate + código fuente + notas
⑤ Programación gramática - aprendizaje automático -Desarrollo completo-análisis de datos-rastreador-APP ingeniería inversa y otro conjunto completo de proyectos + documentos
⑥ Intercambio y estudio
⑦ Quiero recibir pedidos a tiempo parcial
Capítulo 1: Programación de red
1. Programación de red
La programación de redes se refiere a técnicas de programación que utilizan redes informáticas para la comunicación. En Python, socket
la programación de redes se puede implementar mediante módulos.
socket
Es una biblioteca de programación de red que encapsula TCP/IP
el protocolo y proporciona una interfaz de programación de red general que se puede utilizar para crear programas de cliente y servidor. En Python, usa socket
módulos para crear socket
objetos y luego usa ese objeto para la comunicación de red.
El siguiente es un ejemplo simple de programación de red, en el que se crean un servidor y un cliente, el cliente envía un mensaje al servidor y el servidor imprime el mensaje después de recibirlo:
Código del lado del servidor:
import socket
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 8888))
# 监听端口
server_socket.listen(5)
print('服务器已启动,等待客户端连接...')
# 等待客户端连接
client_socket, client_address = server_socket.accept()
print('客户端已连接,地址为:', client_address)
# 接收客户端消息
data = client_socket.recv(1024)
print('接收到客户端消息:', data.decode())
# 关闭socket连接
client_socket.close()
server_socket.close()
Codigo del cliente:
import socket
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(('127.0.0.1', 8888))
# 发送消息
client_socket.send('Hello, server!'.encode())
# 关闭socket连接
client_socket.close()
PyCharm
Para compilar y ejecutar Matlab
archivos en , Matlab
primero debe instalar y configurar las variables de entorno. Luego, PyCharm
abra Matlab
el archivo en , haga clic en el botón Ejecutar para compilar y ejecutar Matlab
el archivo. Si es necesario pasar parámetros, se pueden configurar en la configuración de ejecución.
2. Introducción a TCP/IP
TCP/IP
Es un protocolo de red, que es el protocolo básico de Internet. TCP/IP
La familia de protocolos incluye muchos protocolos, el más importante de los cuales es TCP
el IP
protocolo y.
TCP
El protocolo es un protocolo orientado a conexión que proporciona servicios de transmisión de datos confiables. TCP
El protocolo establece una conexión mediante un protocolo de enlace de tres vías y luego garantiza una transmisión de datos confiable mediante mecanismos de confirmación y segmentación de datos.
IP
El protocolo es un protocolo sin conexión que proporciona servicios de transmisión de paquetes de datos. El protocolo IP determina la ruta de transmisión del paquete de datos a través del algoritmo de enrutamiento y luego transmite el paquete de datos al destino.
En la programación de redes, normalmente utilizamos TCP
protocolos para la transmisión de datos. TCP
El protocolo proporciona servicios de transmisión de datos confiables y es adecuado para escenarios que necesitan garantizar la confiabilidad de la transmisión de datos, como la transmisión de archivos y la transmisión de correo. El protocolo IP
es adecuado para escenarios que requieren una transmisión de datos rápida, como transmisión de video, comunicación en tiempo real, etc.
3. Módulo de Diseño de Red
1. Introducción al zócalo
Socket
Es un mecanismo de comunicación que permite que diferentes procesos se comuniquen a través de una red. En Python, Socket
esto se socket
logra mediante módulos. Socket
Normalmente se utiliza para la comunicación entre clientes y servidores, pero también se puede utilizar para la comunicación entre procesos.
2. Uso del módulo de enchufe
Los módulos en Python socket
proporcionan un conjunto de funciones y clases para creación y manipulación Socket
. Las funciones y clases de uso común incluyen:
socket()
: Crea un objeto Socket.bind()
: vincula el socket a una dirección y puerto específicos.listen()
: comience a escuchar las solicitudes de conexión.accept()
: Acepta una solicitud de conexión y devuelve un nuevo objeto Socket.connect()
: Conéctese a un enchufe remoto.send()
:enviar datos.recv()
:Recibir datos.
3. Servidor
En Python, puedes usar socket
módulos para crear un servidor. Por lo general, un servidor necesita vincularse a una dirección y un puerto específicos y escuchar las solicitudes de conexión. Cuando un cliente se conecta al servidor, el servidor acepta la solicitud de conexión y crea un nuevo Socket
objeto para manejar la solicitud del cliente.
Aquí hay un ejemplo simple de servidor Python:
import socket
HOST = '127.0.0.1' # 服务器地址
PORT = 8888 # 服务器端口号
# 创建一个Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定到地址和端口
server_socket.bind((HOST, PORT))
# 开始监听连接请求
server_socket.listen(1)
print('Server is running on {}:{}'.format(HOST, PORT))
while True:
# 接受一个连接请求,并返回一个新的Socket对象
client_socket, client_address = server_socket.accept()
print('Client connected from {}:{}'.format(client_address[0], client_address[1]))
# 处理客户端请求
data = client_socket.recv(1024)
print('Received data: {}'.format(data.decode()))
# 发送响应数据
response = 'Hello, client!'
client_socket.send(response.encode())
# 关闭连接
client_socket.close()
4. Cliente
En Python, socket
se puede crear un cliente usando un módulo. Los clientes normalmente necesitan conectarse a un control remoto Socket
y enviar datos de solicitud. Cuando el servidor responde a la solicitud, el cliente recibe los datos de respuesta.
Aquí hay un ejemplo simple de cliente Python:
import socket
HOST = '127.0.0.1' # 服务器地址
PORT = 8888 # 服务器端口号
# 创建一个Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到远程Socket
client_socket.connect((HOST, PORT))
# 发送请求数据
request = 'Hello, server!'
client_socket.send(request.encode())
# 接收响应数据
response = client_socket.recv(1024)
print('Received data: {}'.format(response.decode()))
# 关闭连接
client_socket.close()
5. Descargador de archivos
Un descargador de archivos es una aplicación web común que descarga archivos desde un servidor remoto y los guarda localmente. En Python, los descargadores de archivos se pueden implementar mediante socket
módulos y módulos.urllib
Aquí hay un ejemplo simple de descarga de archivos Python:
import socket
import urllib.request
HOST = '127.0.0.1' # 服务器地址
PORT = 8888 # 服务器端口号
FILE_URL = 'http://example.com/file.txt' # 文件下载地址
FILE_NAME = 'file.txt' # 文件保存路径
# 创建一个Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到远程Socket
client_socket.connect((HOST, PORT))
# 发送请求数据
request = 'GET {}\r\n'.format(FILE_URL)
client_socket.send(request.encode())
# 接收响应数据
response = client_socket.recv(1024)
print('Received data: {}'.format(response.decode()))
# 下载文件并保存到本地
with open(FILE_NAME, 'wb') as f:
while True:
data = client_socket.recv(1024)
if not data:
break
f.write(data)
# 关闭连接
client_socket.close()
4. Contenido complementario
1. Protocolo UDP en programación de red.
UDP (Protocolo de datagramas de usuario) es un protocolo de transmisión sin conexión y poco confiable. No garantiza la confiabilidad y secuencia de los paquetes de datos, pero la velocidad de transmisión es rápida y es adecuado para algunos escenarios de aplicaciones que no requieren una alta confiabilidad de los datos. como video, audio y otras transmisiones en tiempo real.
En Python, la programación de protocolos en red socket
se puede implementar mediante módulos UDP
. A continuación se muestra un ejemplo de un UDP
servidor y un cliente simples:
UDP
servidor:
import socket
# 创建UDP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 8888))
while True:
# 接收数据
data, addr = server_socket.recvfrom(1024)
print('Received from %s:%s.' % addr)
print('Data: %s' % data.decode())
# 发送数据
server_socket.sendto('Hello, client!'.encode(), addr)
UDP
cliente:
import socket
# 创建UDP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 发送数据
client_socket.sendto('Hello, server!'.encode(), ('127.0.0.1', 8888))
# 接收数据
data, addr = client_socket.recvfrom(1024)
print('Received from %s:%s.' % addr)
print('Data: %s' % data.decode())
# 关闭套接字
client_socket.close()
En UDP
el protocolo, la dirección de destino y el número de puerto deben especificarse al enviar datos, y la dirección y el número de puerto del remitente se devolverán al recibir datos. Dado que UDP
el protocolo no garantiza la confiabilidad y secuencia de los datos, en las aplicaciones prácticas se deben considerar problemas como la pérdida, duplicación y desorden de datos.
2. La diferencia entre el protocolo UDP y el protocolo TCP
UDP
Protocolo y TCP
protocolo son dos protocolos de transmisión de red de uso común y tienen las siguientes diferencias:
-
Modo de conexión :
TCP
el protocolo es un protocolo orientado a la conexión, mientras queUDP
el protocolo es un protocolo sin conexión.TCP
Los protocolos requieren que se establezca una conexión antes de transferir datos, mientras queUDP
los protocolos no. -
Confiabilidad :
TCP
El protocolo es un protocolo confiable, que garantiza la transmisión confiable de datos, mientras queUDP
el protocolo es un protocolo no confiable, que no garantiza la transmisión confiable de datos. -
Eficiencia de transmisión :
UDP
El protocoloTCP
es más eficiente que la transmisión del protocolo, porqueUDP
el protocolo no necesita establecer una conexión y mantener el estado de la conexión, peroTCP
el protocolo sí. -
Tamaño del paquete :
UDP
el tamaño del paquete de transmisión del protocolo está limitado a 64 KB, mientras queTCP
el protocolo no tiene límite. -
Escenarios de aplicación :
TCP
el protocolo es adecuado para escenarios que requieren una alta confiabilidad de transmisión de datos, como transferencia de archivos, transmisión de correo electrónico, etc., y el protocoloUDP
es adecuado para escenarios que requieren una alta transmisión de datos en tiempo real, como transmisión de video en vivo, llamadas de voz, etc
3. Implementación del código del protocolo UDP
UDP
El protocolo es un protocolo sin conexión, que no garantiza la confiabilidad y secuencia de la transmisión de datos, pero tiene la ventaja de una velocidad de transmisión rápida. UDP
La siguiente es la implementación del código de programación de red usando protocolos en Python :
Código del lado del servidor:
import socket
# 创建UDP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 8888))
# 接收数据
while True:
data, addr = server_socket.recvfrom(1024)
print('Received from %s:%s.' % addr)
print('Data: %s' % data.decode())
# 发送数据
server_socket.sendto('Hello, client!'.encode(), addr)
Codigo del cliente:
import socket
# 创建UDP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 发送数据
client_socket.sendto('Hello, server!'.encode(), ('127.0.0.1', 8888))
# 接收数据
data, addr = client_socket.recvfrom(1024)
print('Received from %s:%s.' % addr)
print('Data: %s' % data.decode())
# 关闭套接字
client_socket.close()
En el código anterior, el servidor primero crea un UDP
socket y vincula IP
la dirección y el número de puerto. Luego recvfrom()
reciba los datos enviados por el cliente a través del método y sendto()
envíe los datos al cliente a través del método. El cliente también crea un UDP
socket, sendto()
envía datos al servidor a través del método y luego recvfrom()
recibe los datos enviados por el servidor a través del método. Finalmente, el cliente cierra el socket.
Esta serie de artículos se basa en las siguientes rutas de aprendizaje: debido al gran contenido: aprender Python desde cero hasta la hoja de ruta avanzada avanzada
Preste atención a la cuenta oficial: campo de entrenamiento de tecnología Python , aprenda avanzado paso a paso
Recursos de Python adecuados para el aprendizaje de base cero y personas avanzadas:
① PDF con notas del tutorial práctico del proyecto completo de Python certificado por Tencent
② PDF con temas de entrevistas sobre Python de más de una docena de fabricantes importantes
③ Conjunto completo de tutoriales en video de Python (JS avanzado avanzado y sin fundamentos)
④ Cientos de proyectos reales de combate + código fuente + notas
⑤ Programación gramática - aprendizaje automático -Desarrollo completo-análisis de datos-rastreador-APP ingeniería inversa y otro conjunto completo de proyectos + documentos
⑥ Intercambio y estudio
⑦ Quiero recibir pedidos a tiempo parcial
El siguiente capítulo trata sobre: programación concurrente de Python: subprocesos múltiples