Traitement de la communication par Python

Traitement de la communication par Python Cet article est l'article du 21ème jour du Calendrier de l'Avent 2015 du SFC Murai & Tokuda Lab de l'Université Keio.

1.Tout d'abord

Jusqu'à l'été, j'ai commencé à toucher le PC à partir du semestre d'automne car j'étais dégoûté de parler de l'importance de la recherche et des services sans l'implémenter au niveau de «qu'est-ce qu'une commande UNIX». Ensuite, j'ai commencé à toucher Swift et Python et maintenant j'écris Python.

Après tout, je suis nouveau dans la programmation. Cette fois, j'écrirai sur la communication socket en Python.

Contenu de cette époque

Configurez un serveur TCP en utilisant uniquement Python et effectuez une communication socket avec un client TCP.

2. Environnement

3. Texte et procédure du code source (voir commentaire)

Puisqu'il existe des différences dans la gestion des types de données entre les séries python2 et 3, j'ai ajouté une correction pour cela. (Aussi print () et input ())

En gros, nous suivrons les étapes en utilisant la bibliothèque de sockets. Commençons par créer un client TCP.

client.py (série Python2)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Entrez le nom d'hôte de votre serveur
port = xxxx #Je vais spécifier un PORT approprié

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Créer un objet

client.connect((host, port)) #Connectez-vous maintenant au serveur

client.send("from nadechin") #Envoyez les données appropriées (comme le sait le destinataire)

response = client.recv(4096) #La réception doit être une puissance appropriée de 2 (pas trop grande)

print response

client.py (série Python3)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Entrez le nom d'hôte de votre serveur
port = xxxx #Je vais spécifier un PORT approprié

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Créer un objet

client.connect((host, port)) #Connectez-vous maintenant au serveur

massage = "from nadechin"

client.send(massage.encode('utf-8')) #Envoyez les données appropriées (comme le sait le destinataire)

response = client.recv(4096) #La réception doit être une puissance appropriée de 2 (pas trop grande)

print(response)

C'est la base des serveurs et des clients qui utilisent Python, et il peut être largement appliqué en l'étendant. Les clients UDP peuvent être créés à peu près de la même manière. (Il n'est pas nécessaire d'appeler connect () pour la communication UDP)

Ensuite, créons un serveur TCP. Bien entendu, ceci est également écrit de la même manière que le formulaire client TCP.

server.py (série Python2)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Entrez le nom d'hôte de votre serveur
port = xxxx #Je vais spécifier le même port défini sur le client

serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversock.bind((host,port)) #Lier en spécifiant IP et PORT
serversock.listen(10) #Écouter une connexion (spécifier le nombre maximum de files d'attente)

print 'Waiting for connections...'
clientsock, client_address = serversock.accept() #Stocker les données une fois connecté

while True:
    rcvmsg = clientsock.recv(1024)
    print 'Received -> %s' % (rcvmsg)
    if rcvmsg == '':
      break
    print 'Type message...'
    s_msg = raw_input()
    if s_msg == '':
      break
    print 'Wait...'

    clientsock.sendall(s_msg) #Renvoie un message
clientsock.close()

server.py (série Python3)


# -*- coding:utf-8 -*-
import socket

host = "xxx.xxx.xxx.xxx" #Entrez le nom d'hôte de votre serveur
port = xxxx #Je vais spécifier le même port défini sur le client

serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversock.bind((host,port)) #Lier en spécifiant IP et PORT
serversock.listen(10) #Écouter une connexion (spécifier le nombre maximum de files d'attente)

print('Waiting for connections...')
clientsock, client_address = serversock.accept() #Stocker les données une fois connecté

while True:
    rcvmsg = clientsock.recv(1024)
    print('Received -> %s' % (rcvmsg))
    if rcvmsg == '':
      break
    print('Type message...')
    s_msg = input().replace('b', '').encode('utf-8')
    if s_msg == '':
      break
    print('Wait...')

    clientsock.sendall(s_msg) #Renvoie un message
clientsock.close()

4. Essayez-le

1

Côté serveur (CentOS)


$ python server.py
Waiting for connections...

2

Côté client (MacBook)


$ python client.py 

3

Côté serveur (CentOS)


$ python server.py
Waiting for connections...
Received -> from nadechin
Type message...
Hello World!

4

Côté client (MacBook)


$ python client.py 
Hello World!

5

Côté serveur (CentOS)


$ python server.py
Waiting for connections...
Received -> from nadechin
Type message...
Hello World!
Wait...
Received -> 

Vous pouvez avoir une petite conversation comme celle-ci. Si vous changez de méthode, vous pouvez échanger indéfiniment, ou si vous ignorez l'acceptation du message, vous pouvez garder le droit de parler même après avoir parlé.

5. Conclusion

C'était une annonce qui ressemble à un petit poisson, mais merci de me donner l'opportunité d'écrire dans un tel endroit. A l'avenir, j'aimerais apprendre le langage C petit à petit et approfondir ma compréhension du réseau.

6. Addendum

J'ai fait de la programmation socket en langage C et j'ai confirmé que je pouvais le faire. Récemment, j'ai mangé beaucoup de choses, mais je commence à m'intéresser à Honeypot et à la programmation système, alors j'écrirai à nouveau lorsque chaque résultat sortira.

Les références

Justin Seitz (2014) "Programmation de cybersécurité" Kazushi Aoki, Yu Arai, Saya Ichinose, Makoto Iwamura, Yuhei Kawakotani, Yuji Hoshizawa

Recommended Posts

Traitement de la communication par Python
Communication socket et traitement multi-thread par Python
Traitement d'image par python (Pillow)
100 Language Processing Knock Chapitre 1 par Python
traitement d'image python
Traitement de fichiers Python
Traitement d'image par le remplacement du canal Python 100 Knock # 1
Échelle de gris par matrice-Reinventor of Python image processing-
Traitement d'image par Python 100 Knock # 6 Traitement de réduction de couleur
Communication socket par langage C et Python
Jugement des nombres premiers par Python
Traitement distribué Python Spartan
Communication série avec python
Traitement de fichiers en Python
Python: traitement du langage naturel
Mémo de visualisation par Python
Traitement multithread en python
Premier traitement d'image Python
Traitement de texte avec Python
Traitement des requêtes en Python
Câblage Communication Pi-SPI avec Python
Traitement d'image avec Python
Communication HTTP avec Python
Réponse de Beamformer par python
Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)
Illustration de traitement de chaîne Python
Divers traitements de Python
[Traitement du langage 100 coups 2020] Résumé des exemples de réponses par Python
Traitement d'image par matrice Basics & Contents-Reinventor of Python image processing-
Envoyer des données de Python au traitement via une communication socket
Apprenez le traitement / collouts asynchrones Python en comparant avec Node.js
Traitement d'image avec Python (partie 2)
100 coups de traitement du langage avec Python 2015
Traitement de texte UTF8 avec python
Reconnaissance vocale par Python MFCC
"Traitement Apple" avec OpenCV3 + Python3
API Web EXE par Python
Programme de formation des nouveaux arrivants par Python
Paramétrage par le configurateur python
Pin python géré par conda
Traitement du signal acoustique avec Python (2)
Traitement du signal acoustique avec Python
Traitement asynchrone (threading) en python
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
Introduction à la communication série [Python]
Traitement d'image avec Python (partie 1)
Extraction de mots-clés par MeCab (python)
Séparez les nombres par 3 chiffres (python)
Afficher la communication Python avec Fiddler
Modèle de commutation de Markov par Python
Traitement d'image avec Python (3)
Post-traitement de python (NG)
Python lancé par des programmeurs C
Collection de traitement d'image en Python
Utilisation du mode Python dans le traitement
Jugement de la plateforme (OS) par Python
Trier par date en python
[Python] Traitement itératif (for, while)
[Python] Traitement d'image avec scicit-image
Traitez d'énormes fichiers Excel avec Python pour améliorer la productivité