Communication de socket en utilisant le serveur de socket avec python maintenant

Objectif

En référence à ce qui suit, il s'agit d'un mémorandum lors de la communication de socket TCP / UDP avec python, bien que cela ressemble plus à maintenant.

socketserver --- Network Server Framework

À propos de la communication par socket

Socket Internet utilise un protocole de communication appelé TCP / IP, mais pour utiliser ce TCP / IP par programmation, une porte spéciale reliant le monde des programmes et le monde de TCP / IP est nécessaire. La passerelle est le Socket, qui est une caractéristique majeure de la programmation TCP / IP. Source: http://research.nii.ac.jp/~ichiro/syspro98/socket.html

Communication par socket TCP

L'alphabet envoyé par le côté client au côté serveur est renvoyé au client avec le côté serveur en le mettant en majuscule.

receiver.py


import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()
        print("{} wrote:".format(self.client_address[0]))
        print(self.data)
        self.request.sendall(self.data.upper())

if __name__ == "__main__":
    HOST, PORT = "localhost", 9999

    with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
        server.serve_forever()

sender.py


import socket
import sys

HOST, PORT = "localhost", 9999
data = " ".join(sys.argv[1:])

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
    sock.connect((HOST, PORT))
    sock.sendall(bytes(data + "\n", "utf-8"))
    received = str(sock.recv(1024), "utf-8")

print("Sent:     {}".format(data))
print("Received: {}".format(received))

Exécuter

$ python receive.py
$ python sender.py "hello world"
Sent:     hello world
Received: HELLO WORLD

Communication par socket UDP

Contrairement à TCP, UDP n'a pas de connexion et continue d'envoyer des données.

receiver.py


import socketserver

class MyUDPHandler(socketserver.BaseRequestHandler):

    def handle(self):
        data = self.request[0].strip()
        socket = self.request[1]
        print("{} wrote:".format(self.client_address[0]))
        print(data)
        socket.sendto(data.upper(), self.client_address)

if __name__ == "__main__":
    HOST, PORT = "localhost", 9999
    with socketserver.UDPServer((HOST, PORT), MyUDPHandler) as server:
        server.serve_forever()

sender.py


import socketserver

class MyUDPHandler(socketserver.BaseRequestHandler):

    def handle(self):
        data = self.request[0].strip()
        socket = self.request[1]
        print("{} wrote:".format(self.client_address[0]))
        print(data)
        socket.sendto(data.upper(), self.client_address)

if __name__ == "__main__":
    HOST, PORT = "localhost", 9999
    with socketserver.UDPServer((HOST, PORT), MyUDPHandler) as server:
        server.serve_forever()

Exécuter

$ python receive_udp.py
$ python sender_udp.py "hello world. udp."
Sent:     hello world. udp.
Received: HELLO WORLD. UDP.

Remarques

Si les données de communication sont volumineuses, il y aura une différence en termes de temps d'exécution et de traitement des données manquantes, mais elle est omise car il s'agit d'un essai. Les détails sur la différence entre UDP et TCP sont les suivants.

Communication par socket

référence

socketserver --- Framework de serveur réseau Traitement des communications par Python cpython/Lib/socketserver.py Apprenons les bases de la communication socket que je connaissais Matsumoto Naoden Programming Okite 16th Network Programming (Socket Edition) Communication par socket

Recommended Posts

Communication de socket en utilisant le serveur de socket avec python maintenant
Communication de socket avec Python
Communication de socket avec Python LEGO Mindstorms
Communication série avec Python
Communication série avec python
Câblage Communication Pi-SPI avec Python
Communication HTTP avec Python
Communication TCP à l'aide du module Socket-Python3
Utilisation de Quaternion avec Python ~ numpy-quaternion ~
[Python] Utilisation d'OpenCV avec Python (basique)
Afficher la communication Python avec Fiddler
Utiliser OpenCV avec Python @Mac
Envoyer en utilisant Python avec Gmail
La communication I2C est effectuée en contrôlant la communication série avec python (à l'aide d'un périphérique USBGPIO8)
Contrôle de la communication série avec communication python et SPI (à l'aide d'un périphérique USBGPIO8)
Compléter python avec emacs en utilisant company-jedi
Moyenne harmonique par Python (en utilisant SciPy)
Utilisation de Rstan de Python avec PypeR
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Module de socket Python 3 et flux de communication de socket
Notes sur l'utilisation de rstrip avec python.
J'ai essayé la communication SMTP avec Python
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
[AWS] Utilisation de fichiers ini avec Lambda [Python]
Communication socket et traitement multi-thread par Python
Essayez une formule utilisant Σ avec python
Derrière le flyer: utiliser Docker avec Python
Utilisation de Python et MeCab avec Azure Databricks
[Python] [Windows] Communication série en Python à l'aide de DLL
Essayez d'utiliser Python avec Google Cloud Functions
Vérifiez les cours des actions avec Slackbot en utilisant Python
Travailler avec OpenStack à l'aide du SDK Python
Conseils pour utiliser python + caffe avec TSUBAME
Communication socket par langage C et Python
J'utilise tox et Python 3.3 avec Travis-CI
[Personal memo] julia --Utiliser la bibliothèque Python avec Julia en utilisant PyCall
FizzBuzz en Python3
Grattage avec Python
Grattage avec Python
Python avec Go
Twilio avec Python
Intégrer avec Python
Déboguer avec VS Code en utilisant Boost Python Numpy
Commencez à utiliser Python
Maintenant Python3 (Autre)
Jouez avec 2016-Python
J'ai essayé d'utiliser mecab avec python2.7, ruby2.3, php7
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Création récente de classement à l'aide de l'API Qiita avec Python
Bingo avec python
Zundokokiyoshi avec python
Exemple de communication Python Socket / outil de lancement de données simple
Scraping à l'aide de Python
Excel avec Python
Micro-ordinateur avec Python
Qu'utilisez-vous lorsque vous testez avec Python?