Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Вниз

Как подавить ошибку подключения 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
2-1257428257
night_light
2009-11-05 16:37
2009.12.20
компоненты ClientSocket и ServerSocket не отображаются на панели


15-1256203947
Putnik
2009-10-22 13:32
2009.12.20
Помогите выбрать видеокарту


1-1229515633
dima47
2008-12-17 15:07
2009.12.20
Защита дискет от копирования


15-1255934035
AlexDan
2009-10-19 10:33
2009.12.20
Программисты Европы будут отвечать за свои ошибки


2-1256941705
_
2009-10-31 01:28
2009.12.20
PChar -> String





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский