Python Socket-Programmierung

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir die Welt der Socket-Programmierung in Python erkunden, in der magischen Szenerie eines lebendigen Karnevals und mit dem phantastischen Charakter eines Fantasy-Ballonkünstlers. Der Karneval ist voller Aufregung und Energie, und der Fantasy-Ballonkünstler bezaubert das Publikum mit seinen spektakulären Schöpfungen. Ziel dieses Labs ist es, in das Reich der Socket-Programmierung einzutauchen und unsere eigenen magischen Netzwerkverbindungen zu schaffen, genauso wie die faszinierenden Ballonkreationen auf dem Karneval.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/NetworkingGroup(["Networking"]) python/NetworkingGroup -.-> python/socket_programming("Socket Programming") subgraph Lab Skills python/socket_programming -.-> lab-271592{{"Python Socket-Programmierung"}} end

Aufbau einer grundlegenden Client-Server-Kommunikation

In diesem Schritt werden wir eine einfache Client-Server-Verbindung mit der Python-Socket-Programmierung erstellen. Der Client und der Server werden in einer grundlegenden Interaktion kommunizieren und Daten austauschen.

  1. Öffnen Sie in dem Verzeichnis ~/project eine neue Python-Datei namens server.py.
  2. Implementieren Sie den Server-Code in server.py.
## server.py
import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(1)

connection, address = server_socket.accept()
with connection:
    print('Connected by', address)
    while True:
        data = connection.recv(1024)
        if not data:
            break
        connection.sendall(data)
  1. Öffnen Sie in dem Verzeichnis ~/project eine weitere Python-Datei namens client.py.
  2. Implementieren Sie den Client-Code in client.py.
## client.py
import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8888))
client_socket.sendall(b'Hello, server')
data = client_socket.recv(1024)
print('Received', repr(data))

Führen Sie diese beiden Dateien gleichzeitig aus und klicken Sie auf "Split Terminal", um dies zu erreichen. Folgende Informationen sollten auf Ihrem Terminal angezeigt werden:

labex:project/ $ python server.py
Connected by ('127.0.0.1', 40082)
labex:project/ $ python client.py
Received b'Hello, server'

Verbesserung der Daten-Serialisierung für die Kommunikation

In diesem Schritt werden wir die Kommunikation zwischen Client und Server verbessern, indem wir die Daten für die Übertragung serialisieren und deserialisieren.

  1. Ändern Sie den Code in server.py, um die Daten-Serialisierung und -Deserialisierung zu integrieren.
## server.py
import socket
import pickle

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(1)

connection, address = server_socket.accept()
with connection:
    print('Connected by', address)
    while True:
        data = connection.recv(1024)
        if not data:
            break
        deserialized_data = pickle.loads(data)
        processed_data = deserialized_data.upper()
        connection.sendall(processed_data.encode())
  1. Ändern Sie den Code in client.py, um die Daten-Serialisierung und -Deserialisierung zu integrieren.
## client.py
import socket
import pickle

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1', 8888))
data_to_send = pickle.dumps('Hello, server')
client_socket.sendall(data_to_send)
received_data = client_socket.recv(1024)
print('Received', received_data.decode())

Führen Sie diese beiden Dateien gleichzeitig aus und klicken Sie auf "Split Terminal", um dies zu erreichen. Folgende Informationen sollten auf Ihrem Terminal angezeigt werden:

labex:project/ $ python server.py
Connected by ('127.0.0.1', 40082)
labex:project/ $ python client.py
Received HELLO, SERVER

Zusammenfassung

In diesem Lab haben wir uns in die zauberhafte Welt der Python-Socket-Programmierung vertieft, indem wir Inspiration aus der magischen Karnevalsatmosphäre und den fantastischen Schöpfungen des Ballonkünstlers gezogen haben. Indem wir Ihnen die Schritte zum Erstellen von Client-Server-Verbindungen, zum Verbessern der Kommunikation durch Daten-Serialisierung und vieles mehr geleitet haben, haben wir uns darum bemüht, eine immersive und bildende Erfahrung zu bieten, die Ihnen ermöglicht, die Kunst der Socket-Programmierung zu meistern und sich an den wunderbaren Verbindungen zu erfreuen, die sie schaffen können.