Maison >développement back-end >C++ >Pourquoi mon serveur TCP affiche-t-il « Impossible de lire les données de la connexion de transport » et comment puis-je y remédier ?
Les serveurs TCP rencontrent parfois l'erreur « Impossible de lire les données de la connexion de transport : une connexion existante a été fermée de force par l'hôte distant » lorsque les clients tentent de se connecter. Cet article explore les causes courantes et propose une solution.
L'erreur, apparaissant souvent autour de la ligne 96 (dans l'exemple de code de serveur fourni) pendant sr.ReadLine()
, provient souvent de mauvaises configurations de sécurité au niveau du transport.
Une incompatibilité des versions du protocole TLS entre le client et le serveur lors de la négociation SSL/TLS est l'une des principales causes de cette erreur. La propriété System.Net.ServicePointManager.SecurityProtocol
est essentielle pour résoudre ce problème.
Bien que .NET négocie généralement automatiquement les versions TLS, des incohérences entre les capacités du client et du serveur peuvent entraîner un échec de négociation et l'apparition d'un message d'erreur.
Pour garantir la compatibilité, définissez explicitement les versions TLS prises en charge à l'aide de la propriété SecurityProtocol
. Ajoutez cette ligne avant d'établir la connexion :
<code class="language-csharp">System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;</code>
Cet extrait de code active la prise en charge de TLS 1.0, 1.1 et 1.2. La correspondance des versions TLS sur le client et le serveur garantit une prise de contact réussie, permettant au serveur de lire les données du client sans interruption.
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!