Maison >développement back-end >Tutoriel Python >Le socket python complète une communication simple

Le socket python complète une communication simple

coldplay.xixi
coldplay.xixiavant
2020-12-25 17:29:196262parcourir

Tutoriel PythonLa colonne présente les méthodes de communication socket

Le socket python complète une communication simple

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

serveur de socket

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).

client socket

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Aperçu des bases de PythonArticle suivant:Aperçu des bases de Python