TCP Le développement d'applications Web est divisé en:
Dis - le. Ming:
Un programme client est un programme qui fonctionne sur Programmes sur les appareils utilisateurs Un programme côté serveur est un programme qui fonctionne sur Programmes sur l'appareil serveur,Services de données dédiés aux clients.
Description des étapes:
Description des étapes:
Objectifs d'apprentissage
Importer socket Module import socket
Créer un client socket Objet socket.socket(AddressFamily, Type)
Description des paramètres:
Description de la méthode:
import socket
if __name__ == '__main__':
# CréationtcpSocket client
# 1. AF_INET:Représentationipv4
# 2. SOCK_STREAM: tcpProtocole de transmission
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connexion à l'application serveur
tcp_client_socket.connect(("192.168.131.62", 8080))
# Code exécuté ici , Description la connexion a été établie avec succès
# Données à envoyer
send_data = " Bonjour serveur , Je suis le client little black !".encode("gbk")
# Envoyer des données
tcp_client_socket.send(send_data)
# Réception des données, Le nombre maximum d'octets de données reçus cette fois est 1024
recv_data = tcp_client_socket.recv(1024)
# Renvoie directement les données binaires envoyées par le serveur
print(recv_data)
# Décoder les données
recv_content = recv_data.decode("gbk")
print(" Les données du serveur de réception sont :", recv_content)
# Fermez la prise
tcp_client_socket.close()
Résultats de la mise en œuvre:
b'hello'
Les données du serveur de réception sont : hello
Description
1. str.encode(Format de codage) Indique que la chaîne est encodée en binaire
2. data.decode(Format de codage) Représente le décodage binaire en chaîne
L'assistant de débogage réseau agit comme serveur :
ImportersocketModule
CréationTCPSocket’socket’
Envoyer des données’send’
Réception des données’recv’
Fermez la prise’socket’ Indique que la communication est terminée
Objectifs d'apprentissage
Importer socket Module:
import socket
Créer un serveur socket Objet :
socket.socket(AddressFamily, Type)
Description des paramètres:
Description de la méthode:
import socket
if __name__ == '__main__':
# CréationtcpSocket côté serveur
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Définir le multiplexage du numéro de port , Libérez immédiatement le numéro de port de sortie du programme
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# Lier le numéro de port au programme
tcp_server_socket.bind(("", 8989))
# Configuration de l'écoute
# 128: Nombre maximum de connexions en attente , Conseils: Il s'agit actuellement d'un serveur monotâche , Un seul client peut être desservi en même temps , L'utilisation ultérieure de tâches multiples permet au serveur de servir simultanément plusieurs clients ,
# Le client n'a pas besoin d'attendre l'établissement de la connexion
# listen Cette dernière socket ne reçoit que les demandes de connexion des clients ,Impossible d'envoyer et de recevoir des messages, Envoyer et recevoir des messages en utilisant la nouvelle socket retournée
tcp_server_socket.listen(128)
# En attente d'une demande de connexion du client , Seul le Code de succès de la connexion client - serveur peut débloquer , Pour que le code continue
# 1. Socket dédié à la communication avec le client : service_client_socket
# 2. ClientipAdresse et numéro de port: ip_port
service_client_socket, ip_port = tcp_server_socket.accept()
# L'exécution du Code indique que la connexion a été établie avec succès
print("ClientipAdresse et numéro de port:", ip_port)
# Recevoir les données envoyées par le client , Le nombre maximum d'octets de données reçues cette fois est 1024
recv_data = service_client_socket.recv(1024)
# Obtenir la longueur des données
recv_data_length = len(recv_data)
print("La longueur des données reçues est:", recv_data_length)
# Décoder les données binaires
recv_content = recv_data.decode("gbk")
print("Les données reçues du client sont::", recv_content)
# Données à envoyer
send_data = "ok, Le problème est en cours ...".encode("gbk")
# Envoyer les données au client
service_client_socket.send(send_data)
# Fermer la prise du service au client , Services de terminaison des communications avec les clients
service_client_socket.close()
# Fermez la prise du serveur , Terminaison et service client pour les demandes de connexion
tcp_server_socket.close()
Résultats de la mise en œuvre:
ClientipAdresse et numéro de port: (‘172.16.47.209’, 52472)
La longueur des données reçues est: 5
Les données reçues du client sont:: hello
Description:
Lorsque le client et le serveur sont connectés , Le numéro de port n'est pas libéré immédiatement après la sortie du serveur , J'ai besoin d'attendre 1-2Minutes.
Il y a deux solutions:
Le Code pour définir le multiplexage du numéro de port est le suivant :
# Paramètres1: Indique la prise courante
# Paramètres2: Définir les options de multiplexage des numéros de port
# Paramètres3: Définir la valeur pour l'option multiplexage du numéro de port
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
L'assistant de débogage réseau agit en tant que client :
Allez!
Merci beaucoup.!
Un effort.!