Heim >Backend-Entwicklung >Python-Tutorial >Einführung in die Socket-Implementierung der TCP-Kommunikation in Python (mit Beispielen)
Der Inhalt dieses Artikels ist eine Einführung in die Implementierung der TCP-Kommunikation über Sockets in Python. Ich hoffe, dass er einen gewissen Referenzwert hat hilfreich sein.
TCP
TCP (Transmission Control Protocol) ist ein verbindungsorientiertes, zuverlässiges, Bytestrom-basiertes Transportschicht-Kommunikationsprotokoll, das von der IETF-Definition von RFC 793 entwickelt wurde. Im vereinfachten OSI-Modell von Computernetzwerken vervollständigt es die von der vierten Schicht angegebenen Funktionen. Das User Datagram Protocol (UDP) ist ein weiteres wichtiges Transportprotokoll innerhalb derselben Schicht [1]. In der Internetprotokoll-Suite ist die TCP-Schicht eine Zwischenschicht, die über der IP-Schicht und unterhalb der Anwendungsschicht liegt. Zwischen Anwendungsschichten verschiedener Hosts sind häufig zuverlässige, rohrförmige Verbindungen erforderlich, die IP-Schicht stellt jedoch keinen solchen Flussmechanismus bereit, sondern sorgt für eine unzuverlässige Paketvermittlung.
Das Folgende ist ein schematisches Diagramm eines Sockets, der die TCP-Kommunikation realisiert. Wir schreiben das Programm gemäß dem schematischen Diagramm
TCP-Server
Der Serverprozess bindet zunächst einen Port und lauscht auf Verbindungen von anderen Clients. Wenn ein Client eine Verbindung herstellt, stellt der Server eine Socket-Verbindung mit dem Client her und nachfolgende Kommunikationen basieren auf dieser Socket-Verbindung.
Lassen Sie uns ein einfaches Serverprogramm schreiben, das Clientverbindungen empfängt und auf Anfragen von Clients reagiert.
import socket server = socket.socket() server.bind(('192.168.1.165',8900)) #调用 listen() 方法开始监听端口, 传入的参数指定等待连接的最大数量 server.listen(4) serObj,address = server.accept() #当有客户端访问时,实现两边的交流,如果有一方退出,整个程序退出。 #服务器程序通过一个永久循环来接受来自客户端的连接 #这里虽然给出最大连接数为4,但单线程程序也只会响应一个连接 while True: #建立连接后,服务端等待客户端发送的数据,实现通信 re_data = serObj.recv(1024).decode('utf-8') print('client>>',re_data) if re_data == 'quit': break send_data = input('server>>') serObj.send(send_data.encode('utf-8')) if send_data == 'quit': break serObj.close() server.close()
TCP-Client
Die meisten Verbindungen sind zuverlässige TCP-Verbindungen. Wenn eine TCP-Verbindung erstellt wird, wird derjenige, der die Verbindung initiiert, als Client bezeichnet, und derjenige, der
initiiert wird, auf die Verbindung zu antworten, wird als Server bezeichnet.
Um aktiv eine TCP-Verbindung zu initiieren, muss der Client die IP-Adresse und Portnummer des Servers kennen.
import socket client = socket.socket() client.connect(('192.168.1.165',8900)) while True: send_data = input("client>>") client.send(send_data.encode('utf-8')) if send_data == 'quit': break re_data = client.recv(1024).decode('utf-8') if re_data == 'quit': break print("server>>",re_data) client.close()
Verwenden Sie ein Fenster zum Ausführen des Clients und ein anderes Fenster zum Ausführen des Servers, damit Sie den Effekt intuitiver sehen können.
Hier ist mein 08_pra.py das Serverprogramm und 09_pra.py das Clientprogramm
Schematische Darstellung, wenn die Verbindung gerade hergestellt wird
Eins Kommunikation Abgeschlossenes Diagramm
Das obige ist der detaillierte Inhalt vonEinführung in die Socket-Implementierung der TCP-Kommunikation in Python (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!