Socket-Kommunikation über Socket-Server mit Python jetzt

Zweck

In Bezug auf das Folgende ist es ein Memorandum, wenn TCP / UDP-Socket-Kommunikation mit Python, obwohl es sich eher wie jetzt anfühlt.

socketserver --- Network Server Framework

Informationen zur Socket-Kommunikation

Socket Das Internet verwendet ein Kommunikationsprotokoll namens TCP / IP. Um dieses TCP / IP programmgesteuert nutzen zu können, ist jedoch eine spezielle Tür erforderlich, die die Welt der Programme und die Welt der TCP / IP miteinander verbindet. Das Gateway ist der Socket, ein Hauptmerkmal der TCP / IP-Programmierung. Quelle: http://research.nii.ac.jp/~ichiro/syspro98/socket.html

TCP-Socket-Kommunikation

Das von der Clientseite an die Serverseite gesendete Alphabet wird an den Client zurückgegeben, wobei die Serverseite es großschreibt.

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

Lauf

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

UDP-Socket-Kommunikation

Im Gegensatz zu TCP hat UDP keine Verbindung und sendet weiterhin Daten.

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

Lauf

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

Bemerkungen

Wenn die Kommunikationsdaten groß sind, gibt es einen Unterschied in Bezug auf die Ausführungszeit und die Behandlung fehlender Daten, diese werden jedoch weggelassen, da es sich um einen Test handelt. Details zum Unterschied zwischen UDP und TCP sind wie folgt.

Socket-Kommunikation

Referenz

socketserver --- Network Server Framework Kommunikationsverarbeitung durch Python cpython/Lib/socketserver.py Lassen Sie uns die Grundlagen der Socket-Kommunikation lernen, die ich kannte Matsumoto Naoden Programming Okite 16. Netzwerkprogrammierung (Socket Edition) Socket-Kommunikation

Recommended Posts

Socket-Kommunikation über Socket-Server mit Python jetzt
Socket-Kommunikation mit Python
Socket-Kommunikation mit Python LEGO Mindstorms
Serielle Kommunikation mit Python
Serielle Kommunikation mit Python
WiringPi-SPI-Kommunikation mit Python
HTTP-Kommunikation mit Python
TCP-Kommunikation mit Socket-Modul-Python3
Verwenden von Quaternion mit Python ~ numpy-quaternion ~
[Python] Verwenden von OpenCV mit Python (Basic)
Verwenden von OpenCV mit Python @Mac
Senden Sie mit Python mit Google Mail
Die I2C-Kommunikation erfolgt durch Steuerung der seriellen Kommunikation mit Python (über ein USBGPIO8-Gerät).
Serielle Kommunikationssteuerung mit Python- und SPI-Kommunikation (mit USBGPIO8-Gerät)
Vervollständigung von Python mit Emacs mit Company-Jedi
Harmonischer Mittelwert von Python (mit SciPy)
Verwenden von Rstan aus Python mit PypeR
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Python 3-Socket-Modul und Socket-Kommunikationsfluss
Hinweise zur Verwendung von rstrip mit Python.
Ich habe die SMTP-Kommunikation mit Python versucht
Bei Verwendung von MeCab mit virtualenv python
Vorsichtsmaßnahmen bei Verwendung von sechs mit Python 2.5
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
Socket-Kommunikation und Multithread-Verarbeitung durch Python
Versuchen Sie eine Formel mit Σ mit Python
Hinter dem Flyer: Docker mit Python verwenden
Verwenden von Python und MeCab mit Azure Databricks
[Python] [Windows] Serielle Kommunikation in Python über DLL
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Überprüfen Sie die Aktienkurse mit Slackbot mit Python
Arbeiten mit OpenStack mit dem Python SDK
Tipps zur Verwendung von Python + Caffe mit TSUBAME
Socket-Kommunikation in C-Sprache und Python
Ich verwende Tox und Python 3.3 mit Travis-CI
[Persönliches Memo] julia - Verwenden Sie die Python-Bibliothek mit julia unter Verwendung von PyCall
FizzBuzz in Python3
Scraping mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Debuggen mit VS-Code mit Boost Python Numpy
Starten Sie Python
Jetzt Python3 (Andere)
Spielen Sie mit 2016-Python
Ich habe versucht, Mecab mit Python2.7, Ruby2.3, PHP7 zu verwenden
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Letzte Ranglistenerstellung mit der Qiita-API mit Python
Bingo mit Python
Zundokokiyoshi mit Python
Python Socket-Kommunikationsbeispiel / einfaches Tool zum Werfen von Daten
Scraping mit Python
Excel mit Python
Mikrocomputer mit Python
Was verwenden Sie beim Testen mit Python?