Maison >développement back-end >Tutoriel Python >Introduction à l'implémentation de socket de la communication TCP en python (avec exemples)
Le contenu de cet article est une introduction à la mise en œuvre de la communication TCP via des sockets en Python (avec des exemples). J'espère que les amis dans le besoin pourront s'y référer. vous être utile.
TCP
TCP (Transmission Control Protocol) est un protocole de communication de couche de transport fiable, orienté connexion et basé sur un flux d'octets, développé par la définition de l'IETF de la RFC 793. Dans le modèle OSI simplifié des réseaux informatiques, il remplit les fonctions spécifiées par la couche de transport de quatrième couche (UDP) qui est un autre protocole de transport important au sein de la même couche [1]. Dans la suite des protocoles Internet, la couche TCP est une couche intermédiaire située au-dessus de la couche IP et en dessous de la couche application. Des connexions fiables de type canal sont souvent nécessaires entre les couches d'application de différents hôtes, mais la couche IP ne fournit pas un tel mécanisme de flux, mais fournit une commutation de paquets peu fiable.
Ce qui suit est un diagramme schématique de socket réalisant la communication TCP. Nous écrivons le programme selon le diagramme schématique
Serveur TCP
Le processus serveur lie d'abord un port et écoute les connexions des autres clients. Si un client se connecte, le serveur établit une connexion Socket avec le client et les communications ultérieures reposent sur cette connexion Socket. Écrivons un programme serveur simple qui reçoit les connexions client et répond aux demandes des clients.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()
Client TCP
La plupart des connexions sont des connexions TCP fiables. Lorsqu'une connexion TCP est créée, celui qui initie la connexion est appelé le client, et celui qui estinitié pour répondre à la connexion est appelé le serveur.
Par exemple, lorsque nous visitons Sina dans le navigateur, notre propre ordinateur est le client et le navigateur établira activement une connexion au serveur de Sina. Si tout se passe bien, le serveur de Sina accepte notre connexion, une connexion TCP est établie et la communication ultérieure consiste à envoyer le contenu de la page Web.
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()Utilisez une fenêtre pour exécuter le client et une autre fenêtre pour exécuter le serveur, afin que vous puissiez voir l'effet de manière plus intuitive.
Ici mon 08_pra.py est le programme serveur et 09_pra.py est le programme client
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!