Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с повторным соединением


Страницы:   1 2

Rob ©   (2002-10-30 17:06:00) 

Добрый вечер!
Для соединения использую стандартные компоненты TClientSocket и TServerSocket.
На стороне клиента раз в несколько секунд вызывается по таймеру примерно такая процедура:

if ClientSocket1.Active=False then ClientSocket1.Open;

Это необходимо для того, чтобы определить жив сервер или нет.

Так вот, после нескольких перезапусков сервера (в Win98 примерно 20 раз, в NT/2k/XP примерно 50 раз) приложение-клиент может подсоедиться только после перезагрузки. Ничто другое пока реально не помогло.
Хотелось-бы услышать что-нибудь по сему поводу.

P.S. В onError на стороне клиента прописано:
ClientSocket.Socket.Disconnect(ClientSocket.Socket.SocketHandle);
как и рекомендовано.


Digitman   (2002-10-30 18:00:00) [21]

Приведи мне значение этого параметра в момент входа в обработчик данного события


Rob   (2002-10-30 17:53:00) [22]

Простите, а что подразумевается под анализом? Перевод сообщения об ошибке на русский? Если (как я и подозреваю) нет, то наставьте, пожалуйста на путь истинный.
Суть проблемы в моем понятии кроется именно в том, что она начинает себя проявлять ИМЕННО через примерно одинаковое число попыток.


Digitman   (2002-10-30 17:46:00) [23]

Ну где анализ-то ? параметра ErrorCode ?


Rob   (2002-10-30 17:41:00) [24]

Asynchronous socket error 10061.

В обработчике onError клиентской стороны:

procedure TMainForm.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;// Сейчас заккоментировано:)
ClientSocket1.Socket.Disconnect
ClientSocket1.Socket.SocketHandle);
ClientSocket1.Close;
Panel_conn.Color:=clRed;//Сигнализирует об "обрыве" соединения
end;


Digitman   (2002-10-30 17:28:00) [25]

onError() - ну так С КАКИМ КОДОМ ОШИБКИ-то ? Он для Пушкина что ли возвращается параметром в этом событии ? Или таки - чтобы ТЫ его проанализировал и определил источник отказа ?


Rob   (2002-10-30 17:24:00) [26]

Вот и я хотел-бы это прояснить для себя. После указанного числа удачных попыток соединения на стороне клиента упорно вызывается onError. Серверная часть при этом продолжает нормально работать, поскольку другие программы-клиенты, подсоединяющиеся к ней и не исчерпавшие "лимита удачных подключений":) свободно коннектятся.


Digitman   (2002-10-30 17:13:00) [27]

>>приложение-клиент может подсоедиться только после перезагрузки
И что мешает сделать это без перезагрузки ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо