Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
18 / 18 / 3
Регистрация: 28.06.2010
Сообщений: 77

Компонент IdTelnet

10.12.2012, 05:16. Показов 4711. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, скажите вот делаю:
C++
1
2
3
4
5
6
7
 //в битоне записано
IdTelnet1->Host = Edit1->Text;
    IdTelnet1->Connect();
    if (IdTelnet1->Connected()) {
        IdTelnet1->IOHandler->WriteLn("Helo");
        ShowMessage("1");
        IdTelnet1->Disconnect();
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::IdTelnet1DataAvailable(TIdTelnet *Sender, const UnicodeString Buffer)
{
  AnsiString s;
 Sleep((unsigned int)100);
 s="ok";
 while (s!="")
 {
  s=IdTelnet1->IOHandler->ReadLn(EOL,1);
  Memo1->Lines->Add(s);
 }
 Application->ProcessMessages();
}
отрабатывает то нормально, посылает, ответ приходит. НО! Почему то программа сразу завершается. К чему бы это?
Смотрел виншарком приконектился- отослал Helo - ответ Hello - и тут же "давай досвидания" и программа закрывается. Почему это происходит?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2012, 05:16
Ответы с готовыми решениями:

IdTelnet
Хочу разобраться с компонентами Telnet, ниукого нет никакх примеров его использования?

IdTelnet С++ Builder. Исключение OnDataAvailable.
при попытке открытия коннекта используя IdTelnet выкидывает исключение OnDataAvailable event is nill. Пробовал подключаться на разные хосты...

IdTelnet, прием сообщения от сервера
Всем доброго дня. Столкнулся с проблемой при приеме сообщения от сервера В событии IdTelnet2DataAvailable есть обработчик void...

5
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.12.2012, 23:46
Telnet Server

Цитата Сообщение от Alex_La Посмотреть сообщение
и тут же "давай досвидания" и программа закрывается. Почему это происходит?
C++
1
IdTelnet1->Disconnect();// Досвидание
0
18 / 18 / 3
Регистрация: 28.06.2010
Сообщений: 77
11.12.2012, 05:41  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
C++
1
IdTelnet1->Disconnect();// Досвидание
так и без этого.. тоже самое, даже showmessage не срабатывыает
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.12.2012, 18:27
У меня нормально работает код ( шлю на почтовый сервер )
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdTelnet1->Host= "pop.yandex.ru";
IdTelnet1->Port= 110;
 
IdTelnet1->Connect();
IdTelnet1->IOHandler->WriteLnRFC("USER [email]avazart@yandex.ru[/email]");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::IdTelnet1DataAvailable(TIdTelnet *Sender, const UnicodeString Buffer)
 
{
Memo1->Lines->Add(Buffer);
}
//---------------------------------------------------------------------------
Добавлено через 7 минут
C++
1
2
3
4
  s=IdTelnet1->IOHandler->ReadLn(EOL,1);
  Memo1->Lines->Add(s);
 }
 Application->ProcessMessages();
Это бредотина... по тому как доступ к полученным данным через переменную Buffer, а
ProcessMessages(); вообще как-то не в тему...
1
18 / 18 / 3
Регистрация: 28.06.2010
Сообщений: 77
18.12.2012, 10:28  [ТС]
поправил, сделал из буфера чтоб брал.
+ прикрутил поток. но почему то поток не хочет завершатся(
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
//сам поток:
void __fastcall telnet_t::Execute()
{
        FreeOnTerminate = true;
 
        AnsiString tmp,login,pass;
 
        for (int i = 0; i < Form1->ListBox1->Items->Count; i++){
                Form1->Memo1->Clear();
 
                tmp = Form1->ListBox1->Items->Strings[i];
                login = tmp.SubString(0,tmp.Pos(":")-1).Trim();
                pass = tmp.SubString(tmp.Pos(":")+1,tmp.Pos(">")-(login.Length()+2)).Trim();
                Form1->koment = tmp.SubString(tmp.Pos(">")+1,tmp.Length()).Trim();
 
 
                Form1->LS->Clear();
                Form1->IdTelnet1->Connect();
                if (Form1->IdTelnet1->Connected()) {
                        Form1->IdTelnet1->IOHandler->WriteLn("Helo");
                        Sleep(2500);
                        Form1->Repaint();
                        Form1->IdTelnet1->IOHandler->WriteLn("auth login");
                        Sleep(2500);
                        AnsiString login1 = Form1->IdEncoderMIME1->EncodeString(Form1->IdEncoderMIME1->ClassType(),login);
                        Form1->IdTelnet1->IOHandler->WriteLn(login1);
                        Sleep(2500);
                        AnsiString pass1 = Form1->IdEncoderMIME1->EncodeString(Form1->IdEncoderMIME1->ClassType(),pass);
                        Form1->IdTelnet1->IOHandler->WriteLn(pass1);
                        Sleep(2500);
                        Form1->LS->Add(Form1->IdTelnet1->IOHandler->ReadLn(EOL,1));
                        Sleep(2500);
                        for (int i = 0; i < Form1->LS->Count; i++){
                                if (Form1->LS->Strings[i] != ""){
                                        Form1->Memo1->Lines->Add(Form1->LS->Strings[i]);
                                }
                        }
                        int count = Form1->Memo1->Lines->Count;
                        AnsiString msg = Form1->Memo1->Lines->Strings[count-1];
                        if (msg == "")
                             msg = Form1->Memo1->Lines->Strings[count-2];
 
                        //******************
                        if (msg.Pos("235")) {
                                //ïотсылаем по почте и записываем в лог:
                                Form1->Alarm(login,0);
                                Form1->Logs("Ïðîâåðÿåìûé ÿùèê åñòü  " + login + " (" + Form1->koment + ")" +"  => ñåðâåð íå äîñòóïåí!");
                                //Close();
                        }
                        else if (msg.Pos("530")){ //просто в лог
                                 AnsiString tt = "ßùèêà " + login + "(" + Form1->koment + ") íå ñóùåñòâóåò  => ñåðâåð äîñòóïåí!";
                                 Form1->Logs(tt);
                        }
                        else {
                                Form1->Logs(msg);
                                //Close();
                        }
                        Form1->IdTelnet1->IOHandler->WriteLn("quit");
                        Form1->IdTelnet1->Disconnect();
 
                        Sleep(1500);
                }
        }
        FreeOnTerminate = false;
        Terminate();
        Form1->Close();
 
 
 
        //---- Place thread code here ----
}
я что то упустил?
C++
1
2
3
4
5
6
//инициализация в кнопке:
        LS = new TStringList();
        IdTelnet1->Host = Edit5->Text;
        IdTelnet1->Port = 25;
        Thrd1 = new telnet_t(true); // поток
        Thrd1->Resume();
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.12.2012, 15:18
Собственно читайте Архангельского и Темы форума про синхронизацию потоков (и как это реализуется TThread)

Добавлено через 2 минуты
Цитата Сообщение от Alex_La Посмотреть сообщение
я что то упустил?
Работу с TThread как минимум
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.12.2012, 15:18
Помогаю со студенческими работами здесь

Условие в цикле if (существует компонент) либо if (выделено место под компонент)
условие в цикле if (существует компонент) либо if (выделено место под компонент) TListBox * lbx2; //обьявил локально ...

Отправить сообшение на IdTelnet
Всем привет! Подскажите пожалуйста как c Indy TelnetServer отправлять сообщения на TelnetClient. Спасибо.

Ввести файл из 13 компонент. Определить в нём сумму модулей отрицательных компонент
Помогите с написанием программы и составлением блок-схемы: Ввести файл из 13 компонент. Определить в нём сумму модулей отрицательных...

Записать в файл G наибольшее значение из первых 5 компонент, затем - следующих 5 компонент и т.д
Дан файл F, компоненты которого являются целыми числами. Записать в файл G наибольшее значение из первых 5 компонент, затем - следующих 5...

Найти в векторе количество отрицательных компонент среди компонент с нечётными номерами
Для заданного вектора a= найти количество отрицательных компонент среди компонент с нечётными номерами. Вектор a= Заранее спасибо!


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru