Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.20;
Скачать: CL | DM;

Вниз

Как подавить ошибку подключения ClientSocket   Найти похожие ветки 

 
Layner ©   (2008-05-16 09:36) [0]

Есть ClientSocket / ServerSocket. Если ServerSocket не запущен, в приложении ClientSocket выдает ошибку 10061. Как ее подавить? Ставил


ClientSocket1.Address := "192.168.0.1"
ClientSocket1.Port := 1010;  
try
ClientSocket1.Active := True  
except
//сюда не попадаю!
end;

Наверное на OnError надо отлавливать? Подскажите пожалуста ;)


 
Layner ©   (2008-05-16 09:38) [1]

Вернее, ошибку то отлавливать, но не выдавать в приложении системную модальную ошибку, а для себя ее записать в журнал и дальше работать.


 
Reindeer Moss Eater ©   (2008-05-16 09:49) [2]

На OnError не пробовал F1 нажать?


 
Layner ©   (2008-05-16 09:56) [3]

Reindeer Moss Eater Спасибо огромное за ответ!!!
в OnError вставил ErrorCode := 0; все устраивает.


 
Сергей М. ©   (2008-05-16 10:54) [4]


> вставил ErrorCode := 0; все устраивает.


Будет устраивать до тех пор, пока не получишь ошибку WSAENOBUFS.
А рано или поздно ты ее получишь обязательно.

Минимальный обработчик ошибки коннекта кроме вышеупомянутой строчки должна включать еще одну строчку:

Socket.Close;

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


 
Layner ©   (2008-05-16 13:24) [5]

Сергей, спасибо!


 
kami ©   (2008-05-17 21:05) [6]

Сергей М. ©   (16.05.08 10:54) [4]
> Будет устраивать до тех пор, пока не получишь ошибку WSAENOBUFS.
> А рано или поздно ты ее получишь обязательно.

Сергей, а почему (в смысле - в результате чего, "почему" написано в MSDN) может возникнуть эта ошибка?


 
Сергей М. ©   (2008-05-18 14:12) [7]

Это объясняется логикой, реализованной в самом компоненте, точнее - в классе TCusomWinSocket.

Почему Борланд автоматически не закрывает сокет при возникшей в ходе коннекта ошибке, я не знаю, но это факт. Возможно, Борланд все же руководствовалась при этом какими-то резонными соображениями.

Количество одновременно существующих сокетов в контексте одного процесса - величина, имеющая предел, зависящий от ресурсов, которые система может выделить процессу при тех или иных условиях. Закрытие сокета ведет к освобождению ассоциированных с ним ресурсов, незакрытие, соответственно, к неосвобождению.


 
kami ©   (2008-05-18 21:21) [8]

То есть, WSAENOBUFS возникнет при долгой (либо очень активной) работе приложения, создающего гнезда в неумеренных количествах.
Понял, спасибо.



Страницы: 1 вся ветка

Текущий архив: 2009.12.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
15-1256003315
TRSteep
2009-10-20 05:48
2009.12.20
Теория и практика клиента и сервера.


2-1257420503
-=SV=-
2009-11-05 14:28
2009.12.20
Возможно ли в заголовке PageControl поставить или добавить кноку?


2-1257213337
sideX
2009-11-03 04:55
2009.12.20
2 вопроса по TWebBrowser


1-1229676379
parasolka
2008-12-19 11:46
2009.12.20
Фокус в DBGrid


1-1229474391
Jack
2008-12-17 03:39
2009.12.20
Использование TCLIENTDATASET без провайдера