Maison >développement back-end >Tutoriel Python >Introduction à l'implémentation de socket de la communication TCP en python (avec exemples)

Introduction à l'implémentation de socket de la communication TCP en python (avec exemples)

不言
不言avant
2018-10-13 16:39:343918parcourir

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

Introduction à limplémentation de socket de la communication TCP en python (avec exemples)

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 est

initié 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.


Pour lancer activement une connexion TCP, le client doit connaître l'adresse IP et le numéro de port du serveur.

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

Schéma schématique lorsque la connexion vient d'être établie

Introduction à limplémentation de socket de la communication TCP en python (avec exemples)

Un communication Schéma complété

Introduction à limplémentation de socket de la communication TCP en python (avec exemples)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer