Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Исключения Socket


Автор: registered 17.10.2006, 18:34
есть класс на основе Socket. У него есть методы чтения-записи данных.
как правило они возвращают true/false, но иногда и объекты. Тоесть может возвращаться null при неудачном действии.

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

Так вот в чем вопрос - что (а вернее какое исключение) считать обрывам, а на что возврвщать результат.
Например: производится запись в сокет. Если это не удалось по причине неправильных данных или сервер ответил, что неудачно, то вернуть
статус. А если произошел обрыв - то бросить исключение.

З.Ы, Или неправильную передачу тоже считать обрывам ? 

Автор: arilou 18.10.2006, 10:56
Цитата(registered @  17.10.2006,  18:34 Найти цитируемый пост)
З.Ы, Или неправильную передачу тоже считать обрывам ?  

По идее, неправильно передачи быть не может, т.к. TCP/IP гаранитирует доставку пакетов. Соотв. если что-то передалось криво, значит произошел сбой в канале, и это скорее всего исключительная ситуация.

Цитата(registered @  17.10.2006,  18:34 Найти цитируемый пост)
Так вот в чем вопрос - что (а вернее какое исключение) считать обрывам, а на что возврвщать результат.

Посмотри в MSDN, какие исключения могут генерировать методы Read, Begin/EndRead и тогда уже будет понятно, как на них реагировать.

Автор: registered 18.10.2006, 14:39
Цитата(arilou @  18.10.2006,  10:56 Найти цитируемый пост)
По идее, неправильно передачи быть не может, т.к. TCP/IP гаранитирует доставку пакетов. Соотв. если что-то передалось криво, значит произошел сбой в канале, и это скорее всего исключительная ситуация.

 тоесть половинчатого пакета быть не может ?

Цитата(arilou @  18.10.2006,  10:56 Найти цитируемый пост)
Посмотри в MSDN, какие исключения могут генерировать методы Read, Begin/EndRead и тогда уже будет понятно, как на них реагировать. 


я использую NetworkStream
для него
Код

catch( EndOfStreamException ...) {...}
catch( IOException...) {...}
catch( SocketException...) {...}


просто не совсем понятно как реагировать на исключения
какое считать обрывом, а какое неправильной передачей.
Или например IOException достаточно для любого случая ?

И как поможет NativeErrorCode ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)