Maison >développement back-end >Tutoriel Python >Le socket python complète une communication simple
Tutoriel PythonLa colonne présente les méthodes de communication socket
Recommandé (gratuit) : Tutoriel Python
Introduction au socket
socket est également connu comme "Socket", le socket enverra des données via le protocole udp/tcp pour réaliser une communication simple entre deux machines.
Remarque : Si vous souhaitez utiliser socket pour établir une communication simple entre deux machines, veuillez d'abord vous assurer que les deux machines sont connectées au même réseau local. Bien entendu, le socket peut également réaliser la communication entre une machine. Il vous suffit de définir l'adresse IP de l'objet de connexion sur 127.0.0.1, qui est l'adresse IP locale.
Exemples
Seules quelques fonctions pratiques sont présentées ici.
函数 | 描述 |
---|---|
socket.socket() | 创建一个套接字 |
socket.bind() | 绑定到一个ip和端口上,传入参数为元组 |
socket.recv() | 接受数据 |
socket.send() | 发送数据 |
socket.close() | 关闭套接字 |
socket.connect() | 连接到一个ip和端口上 |
socket.listen() | 开启tcp端口上监听模式 |
socket.accept() | 阻塞,等待连接 |
Fonction de communication entre machines
Laissez-nous créez un socket_server.py et entrez le code suivant :
import socket server = socket.socket()server.bind(('0.0.0.0',80))server.listen()sock,addr = server.accept()data = ""while True: tmp_data = sock.recv(1024) if tmp_data: data += tmp_data.decode("utf8") else: breakprint('%s发送的内容:%s'%(addr[0],data))sock.close()
Ici, nous avons créé un socket et l'avons lié à l'adresse 0.0.0.0:80. Cette adresse peut également être modifiée en notre Le nom de cette machine. Ensuite, nous passons en mode écoute. Une fois l'utilisateur connecté, nous commençons à recevoir des données (remarque : le décodage utf8 est requis avant d'accepter les données).
Après avoir créé socket_server.py, nous pouvons créer notre client. Créons un fichier appelé socket_client.py, puis entrons le code suivant :
import socket client = socket.socket()client.connect(('127.0.0.1',80))client.send("Hello,Server.".encode("utf8"))client.close()
Ici nous ne parlerons que des deux fonctions suivantes : connecter et envoyer. Nous avons transmis un tuple à la fonction connect, mais bien sûr, une liste fonctionnera également. Le premier élément doit être l’adresse IP de l’objet connecté et le second le port. Une fois la connexion terminée, nous utilisons la fonction d'envoi pour envoyer le message. Avant l'envoi, nous devons encoder le contenu en type utf8.
Envoyer des données à un site Web
Nous créons un fichier appelé socket_website.py et entrons le code suivant :
import socket s.connect(('www.baidu.com',443))s.send('HELLO'.encode('utf8'))s.close()
Ici, nous avons envoyé des données à baidu.com Puisque Baidu utilise le protocole https, nous utilisons le port 443. Si le code ne signale pas d'erreur, cela signifie que l'envoi a réussi. À ce stade, la base de données de Baidu contiendra des données de contenu textuelle supplémentaires appelées HELLO.
astuce : Si vous utilisez continuellement socket pour envoyer des données à un site Web ou à une machine, trop de données entraîneront une saturation de la base de données/de la mémoire de la machine cible, entraînant un crash. Cela implémente une simple attaque ddos légendaire
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!