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.
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.
- Öffnen Sie in dem Verzeichnis
~/projecteine neue Python-Datei namensserver.py. - 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)
- Öffnen Sie in dem Verzeichnis
~/projecteine weitere Python-Datei namensclient.py. - 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.
- Ä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())
- Ä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.



