


Ausführliche Erklärung und praktische Anleitung zur Python-Socket-Programmierung
Im heutigen Internet ist das Socket-Protokoll eine der wichtigsten Grundlagen. Dieser Artikel behandelt alle Bereiche der Arbeit mit der Socket-Programmierung in Python.
Warum Sockets verwenden
Sockets sind verschiedene Kommunikationsprotokolle, aus denen heutige Netzwerke bestehen. Es ist möglich, Informationen zwischen Programmen zu übertragen oder Geräte. Wenn wir beispielsweise einen Browser öffnen, stellen wir als Client eine Verbindung zum Server her, um Informationen zu übertragen.
Bevor wir uns mit diesem Kommunikationsprinzip befassen, wollen wir zunächst klären, was Sockets sind.
Was sind Sockets
Im Allgemeinen sind Sockets interne Anwendungsprotokolle, die zum Senden und Empfangen von Daten erstellt wurden. Ein einzelnes Netzwerk verfügt über zwei Sockets, einen für jedes kommunizierende Gerät oder Programm. Diese Sockets sind eine Kombination aus IP-Adresse und Port. Abhängig von der verwendeten Portnummer kann ein einzelnes Gerät über „n“ Sockets verfügen und verschiedene Ports können für verschiedene Protokolltypen verwendet werden.
Die folgende Abbildung zeigt einige gängige Portnummern und zugehörige Protokollinformationen:
Protokoll |
Portnummer #🎜 🎜 # | Python-Bibliothek
|
||
|
# 🎜. 🎜 # httplib,urllib,requests |
Webseite, Website |
# 🎜🎜#
| #🎜🎜 # # ?? 🎜 # |
119 |
nttplib | #🎜 🎜# News Transfer |
||
SMTP | 25||||
|
|
|
poplib |
|
|
Gopher |
70 | gopherlibDokumentenübertragung |
Da wir nun das Konzept von Sockets verstanden haben, schauen wir uns das Socket-Modul von Python an Um die Socket-Programmierung zu implementieren, müssen Sie das Socket-Modul importieren.
Einige wichtige Methoden dieses Moduls sind wie folgt:
Beschreibung |
#🎜 🎜# #🎜 🎜# socket.socket() |
# 🎜🎜# | socket.bind()|
socket.connect() | Wird zur Verbindung mit der als Parameter angegebenen Remote-Adresse verwendet.|
Da wir nun die Bedeutung des Socket-Moduls verstanden haben, sehen wir uns an, wie man Server und Clients in Python erstellt. Was ist ein Server?Ein Server ist entweder ein Programm, ein Computer oder ein Gerät, das speziell zur Verwaltung von Netzwerkressourcen verwendet wird. Der Server kann sich auf demselben Gerät oder Computer befinden, lokal mit anderen Geräten und Computern verbunden oder sogar remote sein. Es gibt verschiedene Arten von Servern wie Datenbankserver, Webserver, Druckserver usw. Server verwenden normalerweise socket.socket(), socket.bind(), socket.listen() usw., um Verbindungen herzustellen und an Clients zu binden. Lassen Sie uns nun ein Programm schreiben, um einen Server zu erstellen. import socket s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((socket.gethostname(),1234)) #port number can be anything between 0-65535(we usually specify non-previleged ports which are > 1023) s.listen(5) while True: clt,adr=s.accept() print(f"Connection to {adr}established") #f string is literal string prefixed with f which #contains python expressions inside braces clt.send(bytes("Socket Programming in Python","utf-8 ")) #to send info to clientsocket Nach dem Login kopieren Die erste notwendige Voraussetzung zum Erstellen eines Sockets ist der Import der relevanten Module. Verwenden Sie dann die Methode socket.socket(), um einen serverseitigen Socket zu erstellen. AF_INET bezieht sich auf die Adresse aus dem Internet, die ein Paar (Host, Port) erfordert, wobei der Host ein spezifischer sein kann Website Die URL oder ihre Adresse, die Portnummer ist eine Ganzzahl. SOCK_STREAM wird zum Erstellen des TCP-Protokolls verwendet. bind() Methode akzeptiert zwei Parameter als Tupel (Host, Port). Hierbei ist zu beachten, dass am besten eine 4-stellige Portnummer verwendet wird, da niedrigere Portnummern in der Regel vom System belegt bzw. reserviert sind. Mit der Methode listen() kann der Server Verbindungen akzeptieren, und 5 ist eine Warteschlange für mehrere gleichzeitig akzeptierte Verbindungen. Der Mindestwert, der hier angegeben werden kann, ist 0. Wenn keine Parameter angegeben werden, werden die standardmäßigen entsprechenden Parameter verwendet. while-Schleife ermöglicht das dauerhafte Akzeptieren von Verbindungen, clt und adr sind die Clientobjekte und -adressen, die print-Anweisung gibt lediglich die Adresse und Portnummer des Client-Sockets aus und schließlich clt. send wird zum Senden von Daten in Bytes verwendet. Da nun unser Server eingerichtet ist, gehen wir zum Client über. Was ist ein Client?Ein Client ist ein Computer oder eine Software, die Informationen oder Dienste von einem Server empfängt. Beim Client-Server-Modell fordert der Client Dienste vom Server an. Die besten Beispiele sind Webbrowser wie Google Chrome, Firefox usw. Diese Webbrowser fordern den Webserver auf, die erforderlichen Webseiten und Dienste basierend auf den Anweisungen des Benutzers bereitzustellen. Weitere Beispiele sind Online-Gaming, Online-Chat usw. Jetzt sehen wir uns an, wie man ein Client-Programm in der Programmiersprache Python schreibt: import socket s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((socket.gethostname(), 2346)) msg=s.recv(1024) print(msg.decode("utf-8")) Nach dem Login kopieren Importieren Sie zunächst noch das Socket-Modul und erstellen Sie dann den Socket wie beim Erstellen eines Servers. Um dann eine Verbindung zwischen Client und Server herzustellen, müssen Sie die Methode connect() verwenden, indem Sie (Host, Port) angeben. Hinweis: gethostname muss verwendet werden, wenn sich Client und Server auf demselben Computer befinden. (LAN–localip/WAN–publicip) Hier möchte der Client einige Informationen vom Server erhalten, dazu müssen wir die Methode recv() verwenden, die Informationen sind in einer anderen in der Variablen msg gespeichert. Es ist wichtig zu beachten, dass die übertragenen Informationen in Bytes vorliegen und im Client des oben genannten Programms maximal 1024 Bytes (Puffergröße) in einer Übertragung empfangen werden können. Abhängig von der Menge der übertragenen Informationen kann eine beliebige Zahl angegeben werden. Dekodieren und drucken Sie abschließend die übermittelte Nachricht aus. Da wir nun wissen, wie man Client-Server-Programme erstellt, sehen wir uns an, wie sie ausgeführt werden müssen. Client-Server-Interaktion Um diese Programme auszuführen, müssen Sie das Befehlsprogramm öffnen, den Ordner eingeben, in dem die Client- und Serverprogramme erstellt werden, und dann Folgendes eingeben: # 🎜🎜# py server.py #这里,server.py 是服务器的文件名 Nach dem Login kopieren
pyclient.py Nach dem Login kopieren Reduzieren wir die Puffergröße auf 7 und sehen wir, wie das gleiche Programm aussehen wird # 🎜🎜 # Wie in der Abbildung gezeigt, wird die Verbindung nach der Übertragung von 7 Bytes beendet.
Mehrfache Kommunikation Um die Verbindung fortzusetzen, bevor der Client die vollständige Nachricht erhält, können wir eine While-Schleife verwenden import socket s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((socket.gethostname(), 2346)) while True: msg=s.recv(7) print(msg.decode("utf-8")) Nach dem Login kopieren Nach dieser Änderung Bei jeder Übertragung wird die vollständige Nachricht in 7 Bytes empfangen. Aber das wirft ein weiteres Problem auf: Die Verbindung wird nie beendet, man weiß nie, wann sie beendet wird. Was passiert auch, wenn wir nicht wirklich wissen, wie groß die Nachricht oder Informationen ist, die der Client vom Server erhält? In diesem Fall müssen wir den Code weiter verbessern. 程序会检查信息的大小,并将其打印到一次两个字节的缓冲区中,然后在完成连接后关闭连接。 传输 Python 对象目前为止我们仅仅掌握了传递字符串的方法,但是,Python 中的 Socket 编程也允许我们传输 Python 对象。这些对象可以是集合、元组、字典等。要实现这一点,需要用到 Python 的 pickle 模块。 Python pickle模块 当我们实际序列化或反序列化 Python 中的对象时,就会使用到 Python pickle 模块。让我们看一个小例子 import pickle mylist=[1,2,'abc'] mymsg = pickle.dumps(mylist) print(mymsg) Nach dem Login kopieren Output: b’x80x03]qx00(Kx01Kx02Xx03x00x00x00abcqx01e.’ Nach dem Login kopieren 在上面的程序中,mylist是使用pickle模块的dumps()函数序列化的。还要注意,输出以b开头,表示它已转换为字节。在 socket 编程中,可以实现此模块以在客户端和服务器之间传输 python 对象。 如何使用 pickle 模块传输 Python 对象 当我们将 pickle 与 socket 一起使用时,完全可以通过网络传输任何内容。 先来看看服务端代码 Server-Side: import socket import pickle a=10 s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((socket.gethostname(), 2133))#binding tuple s.listen(5) while True: clt , adr = s.accept() print(f"Connection to {adr}established") m={1:"Client", 2:"Server"} mymsg = pickle.dumps(m)#the msg we want to print later mymsg = {len(mymsg):{a}}"utf-8") + mymsg clt.send(mymsg) Nach dem Login kopieren 这里,m是一个字典,它基本上是一个需要从服务器发送到客户端的 Python 对象。这是通过首先使用dumps()序列化对象,然后将其转换为字节来完成的。 现在,让我们记下客户端: Client-Side: import socket import pickle a=10 s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((socket.gethostname(), 2133)) while True: complete_info = b'' rec_msg = True while True: mymsg = s.recv(10) if rec_msg: print(f"The length of message = {mymsg[:a]}") x = int (mymsg[:a ] ) rec_msg = False complete_info += mymsg if len(complete_info)-a == x: print("Recieved the complete info") print(complete_info[a:]) m = pickle.loads(complete_info[a:]) print(m) rec_msg = True complete_info = b'' print(complete_info) Nach dem Login kopieren 第一个while循环将帮助我们跟踪完整的消息(complete_info)以及正在使用缓冲区接收的消息(rec_msg)。 然后,在接收消息时,我们所做的就是打印每一位消息,并将其放在大小为10的缓冲区中接收。此大小可以是任何大小,具体取决于个人选择。 然后如果收到的消息等于完整消息,我们只会将消息打印为收到的完整信息,然后使用loads()反序列化消息。 输出如下: |
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung und praktische Anleitung zur Python-Socket-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wenn Sie unter Windows 11 plötzlich eine langsame Internetverbindung feststellen und alle Tricks ausprobiert haben, liegt das wahrscheinlich nicht an Ihrem Netzwerk, sondern an Ihrer maximalen Übertragungseinheit (MTU). Es können Probleme auftreten, wenn Ihr System Daten mit der falschen MTU-Größe sendet oder empfängt. In diesem Beitrag erfahren Sie, wie Sie die MTU-Größe unter Windows 11 ändern, um eine reibungslose und unterbrechungsfreie Internetverbindung zu gewährleisten. Was ist die Standard-MTU-Größe in Windows 11? Die standardmäßige MTU-Größe in Windows 11 beträgt 1500, was der maximal zulässige Wert ist. MTU steht für Maximum Transmission Unit. Dies ist die maximale Paketgröße, die im Netzwerk gesendet oder empfangen werden kann. jedes Support-Netzwerk
![WLAN-Erweiterungsmodul ist gestoppt [Fix]](https://img.php.cn/upload/article/000/465/014/170832352052603.gif?x-oss-process=image/resize,m_fill,h_207,w_330)
Wenn es ein Problem mit dem WLAN-Erweiterungsmodul Ihres Windows-Computers gibt, kann dies dazu führen, dass Sie nicht mehr mit dem Internet verbunden sind. Diese Situation ist oft frustrierend, aber glücklicherweise enthält dieser Artikel einige einfache Vorschläge, die Ihnen helfen können, dieses Problem zu lösen und Ihre drahtlose Verbindung wieder ordnungsgemäß funktionieren zu lassen. Behebung, dass das WLAN-Erweiterbarkeitsmodul nicht mehr funktioniert Wenn das WLAN-Erweiterbarkeitsmodul auf Ihrem Windows-Computer nicht mehr funktioniert, befolgen Sie diese Vorschläge, um das Problem zu beheben: Führen Sie die Netzwerk- und Internet-Fehlerbehebung aus, um drahtlose Netzwerkverbindungen zu deaktivieren und wieder zu aktivieren. Starten Sie den WLAN-Autokonfigurationsdienst neu. Ändern Sie die Energieoptionen. Ändern Erweiterte Energieeinstellungen Netzwerkadaptertreiber neu installieren Einige Netzwerkbefehle ausführen Schauen wir uns das nun im Detail an

Um auf das Internet zuzugreifen, müssen wir beim Herstellen einer Verbindung zum Internet das richtige DNS verwenden. Wenn wir die falschen DNS-Einstellungen verwenden, wird auf die gleiche Weise ein DNS-Serverfehler angezeigt. Zu diesem Zeitpunkt können wir versuchen, das Problem zu lösen, indem wir in den Netzwerkeinstellungen auswählen, ob DNS automatisch abgerufen werden soll Lösungen. So beheben Sie den Win11-Netzwerk-DNS-Serverfehler. Methode 1: DNS zurücksetzen 1. Klicken Sie zunächst in der Taskleiste auf „Start“, suchen Sie die Symbolschaltfläche „Einstellungen“ und klicken Sie darauf. 2. Klicken Sie dann in der linken Spalte auf den Optionsbefehl „Netzwerk & Internet“. 3. Suchen Sie dann rechts die Option „Ethernet“ und klicken Sie zur Eingabe. 4. Klicken Sie anschließend in der DNS-Serverzuweisung auf „Bearbeiten“ und stellen Sie schließlich DNS auf „Automatisch (D.)“ ein

Was ist das Problem „Download aufgrund eines Netzwerkfehlers fehlgeschlagen“? Bevor wir uns mit den Lösungen befassen, wollen wir zunächst verstehen, was das Problem „Netzwerkfehler-Download fehlgeschlagen“ bedeutet. Dieser Fehler tritt normalerweise auf, wenn die Netzwerkverbindung während des Downloads unterbrochen wird. Dies kann verschiedene Gründe haben, wie z. B. eine schwache Internetverbindung, Netzwerküberlastung oder Serverprobleme. Wenn dieser Fehler auftritt, wird der Download gestoppt und eine Fehlermeldung angezeigt. Wie kann ein fehlgeschlagener Download mit Netzwerkfehler behoben werden? Die Meldung „Netzwerkfehler beim Herunterladen fehlgeschlagen“ kann beim Zugriff auf oder beim Herunterladen erforderlicher Dateien zu einem Hindernis werden. Unabhängig davon, ob Sie Browser wie Chrome oder Plattformen wie Google Drive und Google Fotos verwenden, wird dieser Fehler auftreten und Unannehmlichkeiten verursachen. Nachfolgend finden Sie Punkte, die Ihnen bei der Navigation und Lösung dieses Problems helfen sollen

Wenn WDMyCloud unter Windows 11 nicht im Netzwerk angezeigt wird, kann dies ein großes Problem sein, insbesondere wenn Sie Backups oder andere wichtige Dateien darin speichern. Dies kann ein großes Problem für Benutzer sein, die häufig auf Netzwerkspeicher zugreifen müssen. In der heutigen Anleitung zeigen wir Ihnen daher, wie Sie dieses Problem dauerhaft beheben können. Warum wird WDMyCloud nicht im Windows 11-Netzwerk angezeigt? Ihr MyCloud-Gerät, Ihr Netzwerkadapter oder Ihre Internetverbindung sind nicht richtig konfiguriert. Die SMB-Funktion ist nicht auf dem Computer installiert. Dieses Problem kann manchmal durch einen vorübergehenden Fehler in Winsock verursacht werden. Was soll ich tun, wenn meine Cloud nicht im Netzwerk angezeigt wird? Bevor wir mit der Behebung des Problems beginnen, können Sie einige Vorprüfungen durchführen:

In diesem Artikel wird die Lösung für das Problem vorgestellt, dass das Globussymbol im Win10-Systemnetzwerk angezeigt wird, aber nicht auf das Internet zugreifen kann. Der Artikel enthält detaillierte Schritte, die den Lesern helfen sollen, das Problem des Win10-Netzwerks zu lösen, das zeigt, dass die Erde keinen Zugriff auf das Internet hat. Methode 1: Direkt neu starten. Überprüfen Sie zunächst, ob das Netzwerkkabel nicht richtig eingesteckt ist und ob das Breitband im Rückstand ist. In diesem Fall müssen Sie den Router oder das optische Modem neu starten. Wenn auf dem Computer keine wichtigen Dinge erledigt werden, können Sie den Computer direkt neu starten. Die meisten kleineren Probleme können durch einen Neustart des Computers schnell behoben werden. Wenn festgestellt wird, dass die Breitbandanbindung nicht im Rückstand ist und das Netzwerk normal ist, ist das eine andere Sache. Methode 2: 1. Drücken Sie die [Win]-Taste oder klicken Sie auf [Startmenü] in der unteren linken Ecke. Klicken Sie im sich öffnenden Menüelement auf das Zahnradsymbol über dem Netzschalter.

Wake on LAN ist eine Netzwerkfunktion unter Windows 11, mit der Sie Ihren Computer aus der Ferne aus dem Ruhezustand oder Energiesparmodus wecken können. Während gelegentliche Benutzer es nicht oft verwenden, ist diese Funktion für Netzwerkadministratoren und Poweruser nützlich, die kabelgebundene Netzwerke verwenden. Heute zeigen wir Ihnen, wie Sie sie einrichten. Woher weiß ich, ob mein Computer Wake on LAN unterstützt? Um diese Funktion nutzen zu können, benötigt Ihr Computer Folgendes: Der PC muss an ein ATX-Netzteil angeschlossen sein, damit Sie ihn aus der Ferne aus dem Ruhezustand wecken können. Zugriffskontrolllisten müssen erstellt und allen Routern im Netzwerk hinzugefügt werden. Die Netzwerkkarte muss die Wake-up-on-LAN-Funktion unterstützen. Damit diese Funktion funktioniert, müssen sich beide Computer im selben Netzwerk befinden. Obwohl die meisten Ethernet-Adapter verwenden

Um sicherzustellen, dass Ihre Netzwerkverbindung ordnungsgemäß funktioniert oder um das Problem zu beheben, müssen Sie manchmal die Netzwerkverbindungsdetails unter Windows 11 überprüfen. Auf diese Weise können Sie eine Vielzahl von Informationen anzeigen, darunter Ihre IP-Adresse, MAC-Adresse, Verbindungsgeschwindigkeit, Treiberversion und mehr. In dieser Anleitung zeigen wir Ihnen, wie das geht. Wie finde ich Netzwerkverbindungsdetails unter Windows 11? 1. Verwenden Sie die App „Einstellungen“ und drücken Sie die +-Taste, um die Windows-Einstellungen zu öffnen. Navigieren Sie als Nächstes im linken Bereich zu „Netzwerk & Internet“ und wählen Sie Ihren Netzwerktyp aus. In unserem Fall ist das Ethernet. Wenn Sie ein drahtloses Netzwerk verwenden, wählen Sie stattdessen ein Wi-Fi-Netzwerk aus. Am unteren Bildschirmrand sollten Sie Folgendes sehen:
