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

Вниз

Ошибки на сокетах!   Найти похожие ветки 

 
Monak   (2002-07-03 19:55) [0]

Как при возникновении ошибки типа: Asynchoronous socket error 10061 or 10054! Заставить прогу, чтобы последняя не выдавла
!виндозного! окна ошибки????


 
karbo   (2002-07-27 22:12) [1]

В обработчике события OnError надо сбросить в ноль ErrorCode.
Что-то вроде


procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
......
код
......
ErrorCode:=0
end;


 
Jumper   (2002-07-29 12:50) [2]

у меня была похожая проблема. при вылете клиента (т.е. неправиль
ном завершении работы) на сервере возникала такая ошибка. Возникает
соббыиме errorEvent =eeDisconnect (подробнее смотри хелп)
я пытался по-разному настроить прогу для закрытия отвалившегося
сокета. однако ничего не помогало Пришлось выключать сокет и включать его снова.


 
Egen   (2002-08-07 07:38) [3]

У меня такая же проблема.

2Karbo хм ... уж совсем людей за идиотов не надо считать ... :) до такого то люди и сами доходят ... :)

Дело в том что эта ошибка возникает в виндовом API ... Чтобы ее избежать можно назначить свою процедуру обработки ошибок сокетов. Делается это с помощью function SetErrorProc(ErrorProc: TSocketErrorProc): TSocketErrorProc; (см хелп или исходники ScktComp) ... Однако есть одно НО ... под двухтонник это не работает ... скорее всего NT`е для этого нужно, чтобы приложение имело на это привелегию ... а какую я не в курсе ... может кто подскажет ... мне это и самому интересно ... :)


 
Malder   (2002-08-08 00:06) [4]

Вопрос: Как при возникновении ошибки типа: Asynchoronous socket error 10061 or 10054! Заставить прогу, чтобы последняя не выдавла
!виндозного! окна ошибки????

Ответ: В обработчике события OnError надо сбросить в ноль ErrorCode


абсолютно корректный ответ. Egen, что тебе не нравится ? Ясен пень, что в WinSOCK будет ошибка, но окна то никакого не всплывет.


 
Egen   (2002-08-08 09:27) [5]

Я так и делаю ... но оно все равно вываливается ... :(


 
Malder   (2002-08-08 16:44) [6]

Покажи текст события OnError


 
SemFLY   (2002-08-08 17:01) [7]

Как тут уже говорилось если ставить ErrorCode := 0; , то всё тихо ничего не вылетает.


procedure TForm1.CLS1Error(Sender: TObject; Socket: TCustomWinSocket;ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
end;


= = =
Но я хочу сообщить об это пользователю, что произошла ошибка.
Я пытаюсь перехватить ESocketError, но не выходит.
Вот мой код:


try
CLS1.Port := StrToInt(Edit2.Text);
CLS1.Host := ComboBox1.SelText;
CLS1.Open;
except
Raise ESocketError.Create("Error Test");
end;




 
Digitman   (2002-08-08 17:16) [8]

>SemFLY

Хочешь сообщить пользователю ? Да на здоровье ! Переведи свой TClientSocket в режим ctBlocking и пользуй try..except от души) .. Иначе - забудь про try..except после Open() и смирись c необходимостью обработки OnError() и не забывай в оном обработчике вызывать CloseSocket() при недоступности целевого хоста, иначе рано или поздно получишь WSAENOBUF.

P.S. А не по-барабану ли, из какой точки кода сообщать пользователю об ошибке ? Из блока except или из обработчика события ? Что это меняет ?


 
Digitman   (2002-08-08 17:20) [9]

P.P.S.

Точнее было бы сказать, что try..ecxept после Open() таки нужен в любом из режимов. На случай, если Winsock вообще отсутствует на кл.машине, сей блок с успехом и безусловно отработает


 
SemFLY   (2002-08-08 17:31) [10]

Ок ! Digitman, Спасибо !


 
Malder   (2002-08-08 21:28) [11]

и не забывай в оном обработчике вызывать CloseSocket() при недоступности целевого хоста

Так что, в борландовском TClientSocket действительно ошибка и он не закрывает сокет ?


 
Digitman   (2002-08-09 08:21) [12]

>Malder

Ну почему же сразу - ошибка ? Вот ведь все сразу Борланд обвиняют чуть что ! Мало ли какой отказ транспортного канала может возбудить событие OnError ! А если он (отказ) не связан с отсутствием целевого хоста ? Что же, сразу закрывать хэндл гнезда ? Ведь событие onError() едино для всех отказов и единую обработку для любого случая не придумать ... Каждый случай индивидуально должен рассматриваться ...


 
cyborg   (2002-08-09 10:28) [13]

Digitman © хочу спросить, вот обнаружил недавно, что при посылке больших данных, эти данные отправляются частями по 4 кб. в частности у меня так при посылке текста примерно в 24 кб приходит 6 частей, тут было дело упоминалось что пакеты гуляя по сети могут придти в разброс, например первая часть придёт второй и т.п. вот вопрос, какова вероятность такой мешанины и есть ли такое на самом деле? Для мессаг-то это не болезненно, не важно какая первей придёт, да и их размер маленький, но если посылать файл то это уже становится проблемой.

Порчему спрашиваю, вот для разорванных строк сейчас буду делать сложение данных, например посылаю АААА ББББ СССС, может например придти такое АА АА БББ БСССС, сделаю просто их складывание АААА две сошлись полностью она убирается затем ББББСССС отсюда разбирается сначало ББББ затем СССС, но если может возникнуть мешанина тогда может придти так АА БББ АА БСССС если я сложу их ААБББААБСССС то извлечь ничего не смогу из этих данных, так как у меня смотрится в каждом начале блока заголовок где размер этих данных, ну первая часть извлечётся ААББ так как начало участка АААА пришло и там длинну мы получили эта часть ААББ удаляется из последовательности данных, к тому же она уже не правильная т.е. мусор, остаётся БААБСССС вот тут то и облом всё новые приходящие данные будут складыватьсяв последовательность БААБССССДДДДЕЕЕЕ но обработка уже может и зациклиться либо опять криво обработаться, так как в начале нету заголовка, там будет совсем то, не знаю чего.

Надеюсь, что понятно написал.


 
Digitman   (2002-08-09 12:34) [14]

>>какова вероятность такой мешанины
нулевая

>>и есть ли такое на самом деле
нет


 
cyborg   (2002-08-09 13:27) [15]

:) ну и слава богу.



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

Форум: "Сети";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
4-21298
LevVL
2002-08-19 11:28
2002.10.07
Здравствуйте, уважаемые коллеги! Вопрс не совсем простой...


1-20998
SZap
2002-09-26 13:03
2002.10.07
Немогу получить путь к ехе файлу...


1-21056
Fredericco
2002-09-27 11:12
2002.10.07
Запись в файл переменной типа string.


1-21035
1g0r
2002-09-24 17:51
2002.10.07
Введение новой оконной процедуры (непонятка)


14-21261
RV
2002-09-13 11:05
2002.10.07
про Мышление. (Не про девушек :), просто...)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский