powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Indy TCPPort закрыть
21 сообщений из 21, страница 1 из 1
Indy TCPPort закрыть
    #40101118
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема в том, что не могу закрыть порт нормально, что бы потом заново подключиться.
использую TIdTCPPort.
к источнику (серверу на ардуино) коннектится, работает. но если источник отвалился, а потом опять появился, то обратно не цепляется, только перезагрузкой.
Видимо что то не до конца гаснет.

Расскажите, как надо.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101119
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
только перезагрузкой.

Перезагрузкой сервера или клиента?
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101132
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
Перезагрузкой сервера или клиента?

клиента
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101136
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
wadman
Перезагрузкой сервера или клиента?

клиента
значит он не закрывает сокет. Или закрывает без шатдауна, который винда при перезапуске отсылает.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101273
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или привязался на конкретный порт, который не успевает выйти из состояния TIME_WAIT.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101473
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю такую штуку:

Код: pascal
1.
2.
3.
4.
IPPort->IOHandler->InputBuffer->Clear();
IPPort->IOHandler->WriteBufferClear();
IPPort->IOHandler->CloseGracefully();
IPPort->Disconnect();



в большинстве случаев срабатывает. но, не всегда.
для других случаев перегружаю форму (убиваю IPPort и создаю заново).
Можно было бы не пользоваться компонентов, а создавать его программно, но тогда его не видно в процессе.
так что еще ищу пути решения.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101494
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
но тогда его не видно в процессе.
Неведомо, что это означает.
И что делается в Disconnect.
И всегда ли когда надо вызывается Disconnect.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101495
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще неизвестно, почему сервер не дает подконнектиться 2 раза. Может, и дает.
Ошибка в твоей программе и/или компоненте, похоже.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101503
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73

Видимо что то не до конца гаснет.


Установите Wireshark и посмотрите на процесс обмена - будет видно чья вина: клиента или сервера.
Для просмотра состояния сокетов запустите netstat
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101507
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
Mizer73
но тогда его не видно в процессе.
Неведомо, что это означает.
И что делается в Disconnect.
И всегда ли когда надо вызывается Disconnect.

дисконект вызывается всегда, когда отправлено послание и не получен ответ.

в процессе - это в thread. не знаю, как динамически созданный объект сделать видимым в других формах.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101512
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
TIdTCPPort
А что это за компонент такой? Не смог найти такой тип или класс ни в справке, ни поиском в исходниках Indy, и Гугл ничего не находит.
Может TIdTCPClient?

p.s. Вот такое ещё нашел: TIdMappedPortTCP.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101514
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62
Mizer73
TIdTCPPort
А что это за компонент такой? Не смог найти такой тип или класс ни в справке, ни поиском в исходниках Indy, и Гугл ничего не находит.
Может TIdTCPClient?

p.s. Вот такое ещё нашел: TIdMappedPortTCP.


да, ошибся.
TIdTCPClient

IPPort - это в компонентах IPWorks
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101515
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

попробуйте так закрыть
Код: pascal
1.
  IdTCPClient.Socket.Close;
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101516
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, уже назовёшь ошибку, которую получаешь?.. Не верю, что оно пишет "не
цепляет".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101517
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62
Mizer73,

попробуйте так закрыть
Код: pascal
1.
  IdTCPClient.Socket.Close;



пробовал и так.
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101518
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Может, уже назовёшь ошибку, которую получаешь?.. Не верю, что оно пишет "не
цепляет".

да нет никакой ошибки.
просто, нет подключения.
... и точно, есть команда на повторное подключение.
и точно есть разъединение - стоит семафорчик на события конект и дисконнект
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101520
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На многих форумах это обсуждается
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101521
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит выкидывай Инди, бери мозг в руки и пиши на чистых BSD сокетах. У них
ошибка есть всегда.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101527
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну зачем же сразу BSD-сокеты... Есть же Synapse.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101533
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНу зачем же сразу BSD-сокеты...

Они проще. Прямолинейный вызов нескольких функций. Единственная ловушка для
новичков это процедура корректного дисконнекта, но она пошагово описана в
https://docs.microsoft.com/en-us/windows/win32/winsock/graceful-shutdown-linger-options-and-socket-closure-2
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Indy TCPPort закрыть
    #40101769
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Значит выкидывай Инди, бери мозг в руки и пиши на чистых BSD сокетах. У них
ошибка есть всегда.


в общем, взял IpWorks - и нет проблем
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Indy TCPPort закрыть
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]