Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/50: Рейтинг темы: голосов - 50, средняя оценка - 4.90
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23

Прокомментировать код telnet-client

30.09.2010, 12:28. Показов 9303. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача на месяц.Курсовая по сетям.задание написать программу telnet-klient.
Как я правильно помню из лекции с помощью telnet я должна подключится к другой точке ,отослать команду,получить ответ,отключится...Помимо этого есть еще такие функции как авторизация ???Проблема в том что с сетевым программированием не знакомы,но как я поняла уже все через сокеты.Не могли бы помочь в разъяснении методов,простым языком...вот нашла код...нужно понять принцип действия и сделать все самой!
первый файл
C#
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
 
namespace Telnet
{
    public class TelnetClient : IDisposable, IServiceProvider
    {
        protected readonly Socket theSocket;
        private readonly byte[] m_buffer;
        private SocketError m_error;
        private readonly AsyncCallback receiveDataCallback;
        private readonly AsyncCallback initalizeCallback;
        private readonly BinaryReader m_reader;
 
        public event EventHandler<DataReceivedEventArgs> DataReceived;
 
        protected void FireDataReceived(object sender, DataReceivedEventArgs e)
        {
            if (DataReceived != null)
                DataReceived(sender, e);
        }
 
        protected void FireDataReceived(int count)
        {
            FireDataReceived(this, new DataReceivedEventArgs(count, m_buffer));
        }
 
        public TelnetClient()
        {
            theSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//соединяем сокет с удаленой точкой по протоколу tcp
            m_buffer = new byte[32767];
            receiveDataCallback = new AsyncCallback(ReceiveData);
            initalizeCallback = new AsyncCallback(Initialize);
            m_reader = new BinaryReader(new MemoryStream(m_buffer), Encoding.ASCII);
        }
 
        private void Initialize(IAsyncResult ar)
        {
            theSocket.BeginReceive(m_buffer, 0, m_buffer.Length, SocketFlags.None, out m_error,
                receiveDataCallback, null);
        }
 
        private void ReceiveData(IAsyncResult ar)
        {
            FireDataReceived(theSocket.EndReceive(ar));
        }
 
        public void Send(byte[] buffer)
        {
            theSocket.EndSend(theSocket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, out m_error, initalizeCallback, null));
        }
 
        public void Send(string s)
        {
            Send(Encoding.ASCII.GetBytes(s));
        }
 
        public void Send(char c)
        {
            Send(c.ToString());
        }
 
        
 
        public void Connect(EndPoint remoteEP)
        {
            theSocket.Connect(remoteEP);
            Initialize(null);
        }
 
        public SocketError LastError
        {
            get { return m_error; }
        }
 
        public BinaryReader InputBuffer
        {
            get { return m_reader; }
        }
 
        public void Connect(string host, int port)
        {
            theSocket.Connect(host, port);
            Initialize(null);
        }
 
        public void Connect(IPAddress ip, int port)
        {
            theSocket.Connect(ip, port);
            Initialize(null);
        }
 
        public void Connect(byte[] ip, int port)
        {
            Connect(ConvertToIPv4(ip), port);
        }
 
        public void Connect(Uri url)
        {
            Connect(url.AbsoluteUri, url.Port);
            Initialize(null);
        }
 
        public void Disconnect()
        {
            theSocket.Disconnect(false);
        }
 
        
 
        #region IDisposable Members
 
        public void Dispose()
        {
            m_reader.Close();
            theSocket.Close();
        }
 
        #endregion
 
        #region IServiceProvider Members
 
        public object GetService(Type serviceType)
        {
            if (serviceType.FullName == typeof(Socket).FullName)
                return theSocket;
            return null;
        }
 
        #endregion
 
        public static explicit operator Socket(TelnetClient client)
        {
            return client.theSocket;
        }
 
        public static IPAddress ConvertToIPv4(byte[] address)
        {
            return new IPAddress(address);
        }
 
        ~TelnetClient()
        {
            Dispose();
        }
    }
}
Второй
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Telnet
{
    public class DataReceivedEventArgs:EventArgs
    {
        public readonly int BytesReceived;
        public readonly byte[] Data;
 
        internal DataReceivedEventArgs(int count, byte[] buffer)
        {
            BytesReceived = count;
            Data = buffer;
        }
 
        public override string ToString()
        {
            return Encoding.ASCII.GetString(Data);
        }
    }
}
Буду премного благодарна если кто хоть немног поможет в разъяснении ...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.09.2010, 12:28
Ответы с готовыми решениями:

Создание http client. Исправить код
Здравствуйте! Пытаюсь запустить код с msdn, но на экран ничего не выводится. Подскажите, в чем ошибка? public static class...

Прокомментировать код
значение этих строк не понимаю 1)for (int i = 0; i &lt; n; i++) for (int j = 0; j &lt; m; j++) matrix =...

Прокомментировать код
Большое спасибо! выручили, выручите еще 1 раз) можете комменты написать к этому коду namespace ConsoleApplication2 { class...

6
10 / 12 / 2
Регистрация: 13.01.2010
Сообщений: 363
30.09.2010, 15:42
В первом файле рядом две функции с одинаковыми именами... такой код разве рабочий?

Добавлено через 35 секунд
даже не две, четыре. См. 85 строка
0
106 / 7 / 2
Регистрация: 09.09.2010
Сообщений: 24
30.09.2010, 16:49
Цитата Сообщение от R@Z()r Посмотреть сообщение
В первом файле рядом две функции с одинаковыми именами... такой код разве рабочий?
А что, перегрузку уже отменили?

А по сабжу - уточните, что именно не понятно?
Общий алгоритм д.б. такой: установили TCP-соединение и начали кидаться данными в обе стороны. Всё, что приходит "оттуда" - выводим на экран, все, что приходит с клавиатуры - посылаем туда. Всё. Никаких "авторизаций" нет.

Ну и если строго реализовывать стандарты - нужна обработка 16-ти специальных команд. Спецификацию можно почитать тут.
0
1 / 1 / 0
Регистрация: 30.09.2010
Сообщений: 23
30.09.2010, 21:33  [ТС]
Цитата Сообщение от weirdlos Посмотреть сообщение
А что, перегрузку уже отменили?

А по сабжу - уточните, что именно не понятно?
Общий алгоритм д.б. такой: установили TCP-соединение и начали кидаться данными в обе стороны. Всё, что приходит "оттуда" - выводим на экран, все, что приходит с клавиатуры - посылаем туда. Всё. Никаких "авторизаций" нет.

Ну и если строго реализовывать стандарты - нужна обработка 16-ти специальных команд. Спецификацию можно почитать тут.
В том то и вопрос как реализовать идентификацию?? Для меня сетевое программирование на шарпе как сосулька летом
0
106 / 7 / 2
Регистрация: 09.09.2010
Сообщений: 24
01.10.2010, 01:35
В том то и вопрос как реализовать идентификацию??
Так нет никакой идентификации. Телнет - это, грубо говоря, просто текстовая консоль к удаленному компьютеру. Задача телнет-клиента - отправлять данные на сервер и получать данные с него.
Сервер, конечно, может захотеть провести идентификацию по каким-то своим критериям, но это задача сервера. И в любом варианте идентифицироваться будет не клиент, а пользователь или узел.
0
1 / 1 / 1
Регистрация: 20.09.2014
Сообщений: 21
17.02.2015, 20:17
niutsu, Могли бы прислать исходник Telnet-Client если заработала программа? Буду очень благодарен!
0
0 / 0 / 3
Регистрация: 21.07.2012
Сообщений: 136
24.06.2015, 18:36
подскажите как в этом коде вывести то что ответил сервер на экран? я пробовал с помощью InputBuffer но ничего не получил.
Я правильно понял? это класс для работы с ТЕЛНЕТ терминалом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2015, 18:36
Помогаю со студенческими работами здесь

Прокомментировать код
using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; ...

Прокомментировать код
Помогите закомментировать часть кода for (int k = 0; k &lt; MyText.Length - 1; k = k + 2) { for (i = 0; i...

Прокомментировать код
Есть такой код: public static void Main (string args) { Console.WriteLine(&quot;У программы {0} аргументов&quot;, args.Length); } ...

Прокомментировать код
namespace WindowsFormsApplication4 { public partial class Form1 : Form { public Form1() { ...

Прокомментировать код
Помогите прокомментировать кусочек программного кода. Завтра защита курсака и мне сказали выучить любой кусочек кода и будет оценка ;) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru