Połączenie przez telnet

0

Witam
Piszę sobie programik do rozłączania routera przez telnet. Niestety dopiero uczę się programowania sieciowego i mam problem w pewnych kwestiach. Po pierwsze do łącznia z routerem używam klasy TcpClient. Mój problem polega na tym, że nie wiem za pomocą czego wysyłać polecenia do routera, a także odbierać komunikaty. W necie znalazłem wskazówki by skorzystać z klasy NeworkStream, a może trzeba użyć czegoś innego? W dodatku nie wiem jak zatwierdzać dane polecenia, normalnie wciska się ENTER, ale tu musi to być czynność zautomatyzowana. Proszę o pomoc.

0

Potrzebujesz NetworkStream i do niego dwóch dodatkowych rzeczy: StreamWriter wysyłania danych, StreamReader do odbierania danych. Fragment jakiegoś mojego kodu do wysyłania danych (do serwera XMPP, ale to bez znaczenia):

TcpClient socket = new TcpClient();
socket.Connect("host", 5222);
NetworkStream ns = socket.GetStream();

StreamWriter sw = new StreamWriter(ns);
StreamReader sr = new StreamReader(ns);

sw.AutoFlush = true; // automatyczne wysyłanie
sw.WriteLine("foobar"); // wysłanie i zakończenie tego enterem

sr.ReadLine(); // odczytanie danych odebranych od serwera

Oczywiście tutaj wszystko jest synchroniczne, więc ReadLine() przyblokuje aplikację czekając aż nadejdą jakieś dane z połączenia. Bez tego stosuje się albo wątki albo zdarzenia (asynchroniczny odbiór danych).

Enter to po prostu wysłanie znaków \r\n (lub samego \n).

0

Wielkie dzięki. Tego mi było trzeba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1