Heim >Backend-Entwicklung >Python-Tutorial >Einführung in die Socket-Implementierung der TCP-Kommunikation in Python (mit Beispielen)

Einführung in die Socket-Implementierung der TCP-Kommunikation in Python (mit Beispielen)

不言
不言nach vorne
2018-10-13 16:39:343947Durchsuche

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

Einführung in die Socket-Implementierung der TCP-Kommunikation in Python (mit Beispielen)

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.

Wenn wir beispielsweise Sina im Browser besuchen, ist unser eigener Computer der Client und der Browser stellt aktiv eine Verbindung zum Server von Sina her. Wenn alles gut geht, akzeptiert Sinas Server unsere Verbindung, es wird eine TCP-Verbindung hergestellt und die anschließende Kommunikation besteht darin, den Inhalt der Webseite zu senden.

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

Einführung in die Socket-Implementierung der TCP-Kommunikation in Python (mit Beispielen)

Eins Kommunikation Abgeschlossenes Diagramm

Einführung in die Socket-Implementierung der TCP-Kommunikation in Python (mit Beispielen)

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen