Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка No execute handler found в idTCPClient 
V
    Опции темы
SomlicH
Дата 24.1.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 24.1.2006
Где: г. Абинск

Репутация: нет
Всего: нет



Начал юзать компоненты idTCPClient и idTCPservet в 7 Делфях
Код самый элементарный:

Код

idTCClient1.Host:='localhost';
idTCClient1.Port:=1001;
idTCPServer1.DefaultPort:=1001;
idTCPServer1.Active:=True;
idTCPClient1.Connect;


Только запускаю на исполнение, то сразу выкидывает ошибку No execute handler found
ничего понять не могу, перерыл пол Инета. Или я такой тупой или Делфи сильно умный?
Need Help!!!! Please!!!!!

Это сообщение отредактировал(а) Girder - 30.1.2006, 13:02
PM MAIL   Вверх
Snowy
Дата 24.1.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Просто тебя просят написать код для сервера - т.е. что должен делать сервер при коннекте.
Нужно или хэндлер приделывать, либо написать кон да события сервера.
Иначе он просто не знает что ему делать и ругается.
PM MAIL   Вверх
SomlicH
Дата 25.1.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 24.1.2006
Где: г. Абинск

Репутация: нет
Всего: нет



Может я пока что то плохо понимаю, но вот например я довавил

Код

procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
Showmessage('Connected from: ' +AThread. Connection.Socket.Binding.PeerIP);
idTCPClient1.Disconnect;
idTCPServer1.Active:=False;
end;

То есть по логике долно выдаваться сообщение о IP адресе подключенного клиента,
затем отключается клинет и сервер.
все нормально, сообщение выдается, а через пару секунд выпрыгивает ошибка
Terminate Thread Timeout, что за время вышло я не пойму?

Если вопрос глупый, то оговорюсь, начинаю только осваивать эти компоненты.

Это сообщение отредактировал(а) Girder - 30.1.2006, 13:02
PM MAIL   Вверх
Snowy
Дата 25.1.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Нужно назначить событие OnExecute.
Оно будет вызываться постоянно, пока не произойдет дисконнект.
Без него поток коннекта не знает что ему делать - в нем должна быть вся основная логика.
PM MAIL   Вверх
SomlicH
Дата 25.1.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 24.1.2006
Где: г. Абинск

Репутация: нет
Всего: нет



Смысл приложения в принципе прост: по локалке несколько клиентов отсылают значение нескольких
переменных (типа String) серверу. Он их отображает в таблице, указывая с какого IP адреса эти данные поступили (или сетевого имени компьютера). Вот в принципе и все.

С ошибками вроде разобрался. Огромное спасибо. И вроде понял как посылаются текстовые
сообщения (WriteLn и соответствено ReadLn), но вот как конкретно послать переменную ну например
Name:='Вася Пупкин', потом Now:='50%' , и чтобы сервер понял, что это конкретно значение этой переменной, а ни какой другой.

И еще, как коректно завершить все подключения, если методом Disconnect, то где его припаять?

Заранне спасибо за помощь в освоении сетевых дебрей Делфи smile

PM MAIL   Вверх
Snowy
Дата 25.1.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Посылый их вместе.
Или соединяй в одну строку через какой-нить разделитель,
Или работай не текстом, а в потоковом режиме. Отправить блок данных - принять блок данных.
Только не забывай перед отправкой слать 2 байта размер данных, а при чтении читай 2 байта, а потом данные этого размера.
Добавлено @ 18:13
Вот пример текстового сервера:
Добавлено @ 18:15
P.S. В качестве клиента может быть телнет. Просто подключись им на порт 8080.

Присоединённый файл ( Кол-во скачиваний: 55 )
Присоединённый файл  Server.zip 8,30 Kb
PM MAIL   Вверх
SomlicH
Дата 25.1.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 24.1.2006
Где: г. Абинск

Репутация: нет
Всего: нет



Огромное спасибо за исчерпывающий ответ. Особенно за пример.

Форум просто супер. Постараюсь здесь почаще бывать. smile
Добавлено @ 19:04
Поступил просто (может слишком)?
Посылая значение переменных, начиная каждую с цифры (например '1Вася Пупкин')
Цифры анализирует сервер, если например первая цифра 1 то значит пришла переменная
Name и так далее, на клиенте таймер и каждые 5сек от отсылает данные серверу.
Может не изящно, но работает.
И с дисконнектом всю оказывается просто.
А я 4 дня парился, пока на этот форум не забрел.

Snowy - низкий поклон!

Это сообщение отредактировал(а) SomlicH - 25.1.2006, 19:06
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.