J'utilise la classe TcpClient pour implémenter une connexion Telnet. Ce que je ne sais pas, c'est comment déterminer la fin de la réponse. Il semble qu'une fois que la propriété DataAvailable a la valeur true, j'ai lu les données de Stream et DataAvailable est temporairement défini sur false pendant que le tampon est rempli avec un autre bloc de données, mais je pense que tout est lu et disparaît. Comment puis-je m'assurer que toutes les réponses ont été lues?Comment gérer les retards sur la connexion Telnet par programme?
Vous pouvez me conseiller comment modifier l'extrait de code ci-dessous pour que cela fonctionne correctement. Cela fonctionne correctement lorsque je parcours le code car il y a suffisamment de temps pour récupérer toute la réponse. Apprécier ton aide.
if (this.Stream.DataAvailable)
{
readBuffer = new Byte[this.Client.ReceiveBufferSize];
do
{
// read data
bytes = this.Stream.Read(readBuffer, 0, readBuffer.Length);
Thread.Sleep(10);
responseData = String.Concat(responseData, System.Text.Encoding.ASCII.GetString(readBuffer, 0, bytes));
} while (this.Stream.DataAvailable);
allDataRead = true;
break;
}
Il s'agit d'une connexion au serveur telnet utilisant le port TCP/IP et le port 23. Le serveur ne met pas fin à la connexion. La première partie de la session Telnet est l'authentification lorsque le serveur demande le premier nom d'utilisateur, puis le mot de passe. Je vais vérifier le délimiteur et vous laisser savoir plus tard. Je vous remercie. – David
En supposant que le serveur Telnet est une session de console sous Unix/BSD/Windows/etc. serveur, vous pouvez utiliser le texte de l'invite de commande comme délimiteur. –