| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Элементраное в Indy |
| Автор: elestrago 16.5.2008, 13:55 |
| Парни покажите пожалуйста как элементарно отправить\приянять текст используя INDY tcp server\client желаетльно бы увидить какой нибуть работающий исходник(клиент отправляет текст серверу сервер выводит в мемо и наоборот)!! а то я не фига не могу понять в инди, до этого работал в TClient\serverSocket там это делается элементарно!! и что еще за событие Onexecute в сервере инди? Пс читал Глубины инди но там я не фига не понял есть ли что нибуть наподобии только не глубины а "поверхность" инди ? |
| Автор: elestrago 16.5.2008, 14:54 |
| блин сори за тему, просто я криво поставил инди 10 и все коды которые я пробовал не работали... теперь 9ю вернул и все заработало и я все понял )))) |
| Автор: DmitryHT 16.5.2008, 20:57 |
| поставь 10.2.3 из snapshot - вообще сказка |
| Автор: Beltar 18.5.2008, 13:41 |
| Неожиданно вперся в необходимость работать с сетью. Нужно написать сервер, который бы отслеживал состояние множества клиентов. Выбрал Indy 9, могу изменить на Indy 10, но там я не нашел компонента TIdThreadMgrDefault с которым дается пример в DRKB. ХЗ, что там еще поменялось. Положил на форму TidTCPServer, TidTCPClient, для реализации множества потоков, как я понял, нужен TIdThreadMgrPool вместо TIdThreadMgrDefault. Задал для сервера DefaultPort=5500, он вроде ничей. Сразу вопрос, как это свойство связано со свойством Bindings? Указал у клиента хост и порт. Чем отличаются Bound Port и Port? Пробую вызвать TCPClient.Connect(5); и получаю эксепшен, что "address and port already in use". Что делать? |
| Автор: Beltar 19.5.2008, 12:10 |
| Так, похоже, в одну софтину клиент и сервер не положишь. Года 2,5 назад я с Winsock API ковырялся так вроде получалось. Остается вопрос, что нужно использовать, чтобы обрабатывать подключения с множества компов: TIdSchedulerOfThreadPool или что иное (ничего). |
| Автор: Beltar 25.5.2008, 19:28 | ||
Еще вопрос, что делать с Connection Closed Gracefully? Просто пингую по таймеру Timer1 сервер. При посылке запускаю Timer2, который проверяет таймаут. Если что-то принято, то таймер1 перезапускается, таймер2 останавливается. При срабатывании Timer2 считаею, что связь порвалась и запускаю Timer4, в котором попробую соединиться.
Все нормально пока сервер не закрываю, после этого начинает добивать ошибка Connection Closed Gracefully и события таймеров не срабатывают. Где ловить это исключение мне непонятно. При перезапуске сервера связь не всстанавливается. |
| Автор: dumb 26.5.2008, 04:18 |
| везде, где вызываешь индейские функции соединения/посылки/приема. |
| Автор: MetalFan 26.5.2008, 08:07 |
| Beltar, имхо не самая лучшая мысль использовать TTimer... это вроде как значит, что с "другой стороны" закрыли соединение... эээ... это разве пинг? |
| Автор: Beltar 27.5.2008, 07:27 | ||||
А какая разница, что послать? Ну допустим у меня простейший текстовый протокол. Приставил к строке CMD: считаю, что это команда, нет, просто сообщение.
Ну да. Достаточно закрыть сервер, как возникает такое исключение. И дальше каждые несколько секунд. Мне не понятна такая логика, если клиент сам обнаруживает разрыв связи (=> я изобретаю велосипед), то почему он просто не переходит в дисконнектид? |
| Автор: MetalFan 27.5.2008, 10:33 |
надо называть все своими именами. ping - это ping. а то, что ты там сам шлешь - ни разу не пинг. прямо таки? и в каком месте возникает? |
| Автор: Beltar 28.5.2008, 15:21 | ||
Понятие "сам" очень относительно.
Так все нормально. Спасибо за помощь. |