Comment mettre en œuvre la programmation réseau de la technologie sous-jacente de Python
La programmation réseau est un domaine technique important dans le développement de logiciels modernes, grâce à la programmation réseau, nous pouvons réaliser la communication entre les applications et réaliser une transmission et une interaction de données entre machines et multiplateformes. . En tant que langage de programmation largement utilisé, Python fournit une technologie sous-jacente simple et puissante pour mettre en œuvre la programmation réseau. Cet article explique comment utiliser la technologie sous-jacente de Python pour la programmation réseau et fournit des exemples de code spécifiques.
import socket # 创建套接字对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 s.bind(('127.0.0.1', 8000)) # 监听连接 s.listen(5) # 等待客户端连接 client_socket, addr = s.accept() print(f"连接已建立,客户端地址:{addr}") # 接收数据 data = client_socket.recv(1024) # 发送数据 client_socket.send(b"Hello, client!") # 关闭连接 client_socket.close() s.close()
Le code ci-dessus crée d'abord un objet socket, puis lie une adresse et un port. Ensuite, écoutez les connexions et attendez les connexions client. Une fois que le client s'est connecté avec succès, il peut recevoir et envoyer des données, et enfin fermer la connexion.
import select import socket # 创建套接字对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 s.bind(('127.0.0.1', 8000)) # 监听连接 s.listen(5) # 保存所有客户端套接字的列表 inputs = [s] while True: # 获取可读的套接字 readable, _, _ = select.select(inputs, [], []) for sock in readable: # 如果是主服务器套接字,则表示有新的连接 if sock == s: client_socket, addr = s.accept() print(f"连接已建立,客户端地址:{addr}") inputs.append(client_socket) # 否则为客户端套接字,表示有数据发送 else: data = sock.recv(1024) if data: print(f"收到客户端发送的数据:{data.decode()}") sock.send(b"Hello, client!") else: print("客户端已断开连接") sock.close() inputs.remove(sock)
Le code ci-dessus utilise le module select pour écouter les sockets lisibles. Si le socket lisible est le socket du serveur principal, cela indique une nouvelle demande de connexion. S'il s'agit d'un autre socket client, cela signifie que les données ont été envoyées et que la réponse peut être reçue et envoyée. Si des données vides sont reçues, le client s'est déconnecté.
import socket import threading def handle_client(client_socket, addr): print(f"连接已建立,客户端地址:{addr}") while True: data = client_socket.recv(1024) if data: print(f"收到客户端发送的数据:{data.decode()}") client_socket.send(b"Hello, client!") else: print("客户端已断开连接") client_socket.close() break # 创建套接字对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 s.bind(('127.0.0.1', 8000)) # 监听连接 s.listen(5) while True: # 等待客户端连接 client_socket, addr = s.accept() # 创建一个新的线程处理客户端连接 t = threading.Thread(target=handle_client, args=(client_socket, addr)) t.start()
Le code ci-dessus gère principalement chaque connexion client en créant un nouveau thread. Chaque thread possède un objet socket indépendant qui peut recevoir des données envoyées par le client et envoyer des réponses. Dans le même temps, le thread principal écoute toujours les nouvelles demandes de connexion.
À travers les exemples ci-dessus, nous pouvons voir que Python fournit un ensemble complet de technologies sous-jacentes pour implémenter la programmation réseau. Grâce à ces technologies sous-jacentes, nous pouvons créer de manière flexible diverses applications réseau et parvenir à une communication et une interaction efficaces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!