Καλησπέρα
Θέλω να συνδεθώ μέσω telnet σε έναν server και να στείλω κάποιες εντολές στον server και να "πιάσω" αυτά που θα μου επιστρέψει.
Από το googling (http://www.codeproject.com/cs/internet/MinimalisticTelnet.asp) που έκανα βρήκα ότι συνδέομαι μέσω TcpClient,
το έκανα και συνδέθηκα κανονικά.
Στέλνω τις εντολές δεν μου χτυπάει κάποιο error ή exception, δείχνει ότι το πρόγραμμα λειτουργεί κανονικά αλλά όταν συνδέομαι στον server για να δω αν έχουν γίνει οι αλλαγές, τίποτα δεν έχει γίνει.
Οι εντολές παίζουν κανονικά, διότι όταν συνδέομαι με telnet από cmd των windows και δίνω τις εντολές κανονικά λειτουργούν.
Ερώτηση:
1) Είμαι στον σωστό δρόμο χρησιμοποιώντας tcpclient και Stream objects ή πρέπει να χρησιμοποιήσω κάτι άλλο ;
2) και αν είμαι, πώς πρέπει να χρησιμοποιήσω για να στείλω τις εντολές και να διαβάσω το αποτέλεσμα ?
Τώρα το δοκιμάζω σαν console application απλά ο στόχος είναι η εφαρμογή να τρέξει μέσω asp.net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
NetworkStream netwStream; StreamReader StreamREADER; StreamWriter streamWblock; StreamWriter streamWunblock; TcpClient tclz; try { string blockStr = "BLOCK SERVER"; string unblockStr = "unBLOCK SERVER"; tclz = new TcpClient(); tclz.Connect("20.20.20.20", 14522);
if (tclz.Connected == true) { Console.WriteLine("............Connected............."); // <-- typonete kanonika mexri edw netwStream = tclz.GetStream(); streamWblock = new StreamWriter(netwStream); streamWunblock = new StreamWriter(netwStream); StreamREADER = new StreamReader(netwStream); streamWblock.WriteLine(blockStr); // <-- deixnei oti ekteleitai alla oxi stin pragmatikotita if (netwStream.DataAvailable) { string strIncomingData = StreamREADERx.ReadLine(); Console.WriteLine(strIncomingData); // <-- den moy typwnei tipota, enw apo telnet h entoli epistrefei panta "OK" } //streamWblock.WriteLine(unblockStr);
} //end if is connected
tclz.Close(); } catch (Exception errs) { throw errs; } |