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

Вниз

Как в Indy 10 обработать ошибки подключения?   Найти похожие ветки 

 
NeyroSpace ©   (2007-06-11 01:17) [0]

Только знакомлюсь с Indy 10, до этого использовал ассинхронные сокеты. В демках 10 все лишком просто и нет ответов на мои вопросы...
Допустим клиент коннектится к серверу.
В виндозных сокетах я ловил OnError и дальше сверял с константой и определял, что за ошибка. В Indy пишем отлов ошибки прямо в коде, но по каким константам понять, что случилось? Подключать модуль сокетов?
Как вообще в Indy 10 ошибки связи обрабатываются?
Может есть где-нить внятный примерчик? Серверная часть тоже интересует.

try
 IdTCPClient1.Connect;
except
 on E: EIdSocketError do
   begin
   case E.LastError of
     eeGeneral: <- откуда тут константу брать?
     .....


 
G_M_S ©   (2007-06-12 10:41) [1]


>   eeGeneral: <- откуда тут константу брать?

В хэлпе они не перечислены, но эти константы совпадают по значению с обычными ошибками сокетов. Во вском случае, 10061 и 10038 ТОЧНО совпадают. В хэлпе к стандартным соккетам описаны такие константы:

eeGeneral
The socket received an error message that does not fit into any of the following categories.

eeSend
An error occurred when trying to write to the socket connection.

eeReceive
An error occurred when trying to read from the socket connection.

eeConnect
For client sockets, this indicates that the client socket can"t locate the server, or that a problem on the server prevents the opening of a connection. For server sockets, this indicates that a client connection request that has already been accepted could not be completed.

eeDisconnect
An error occurred when trying to close a connection.

eeAccept
For server sockets only, this indicates that a problem occurred when trying to accept a client connection request.


 
NeyroSpace ©   (2007-06-12 12:19) [2]

а как использовать ф-цию:
WSTranslateSocketErrorMsg()
я так понимаю на выходе она должна давать текстовое сообщение об ошибке?
Я нашел константы в IdStackConsts, но они там без комментариев((


 
G_M_S ©   (2007-06-12 13:04) [3]


> WSTranslateSocketErrorMsg()

никогда не использовал. Но судя по хэлпу она таки должна выдавать сообщение. Попробовал - нифига не выдало... Кстати, в хэлпе к ней описаны константы, но большинство из них "Topic Generated" :(((

Я вообще, если честно, настолько детально никогда сообщений об ошибках не выдаю. try...except, если ошибка - пусть юзер сам думает, чего он там напортачил.


 
Орион ©   (2007-06-12 14:51) [4]

Всегда делал так:

on E: EIdSocketError do
  case E.LastError of
    10060: //connect time-out
      WriteTunnelError(Format(RequestTimeout, [CommandParser.ProtoVersion, DateTimeToStr(Now), LocalHeaders.Values["Host"]]));
    11001, //host not found
    11004: //no data record
      WriteTunnelError(Format(HostNotFound,   [CommandParser.ProtoVersion, DateTimeToStr(Now), LocalHeaders.Values["Host"]]));
  end;


 
Орион ©   (2007-06-12 14:53) [5]

на всякий случай)

Socket error 10004 - Interrupted function call
Socket error 10013 - Permission denied
Socket error 10014 - Bad address
Socket error 10022 - Invalid argument
Socket error 10024 - Too many open files
Socket error 10035 - Resource temporarily unavailable
Socket error 10036 - Operation now in progress
Socket error 10037 - Operation already in progress
Socket error 10038 - Socket operation on non-socket
Socket error 10039 - Destination address required
Socket error 10040 - Message too long
Socket error 10041 - Protocol wrong type for socket
Socket error 10042 - Bad protocol option
Socket error 10043 - Protocol not supported
Socket error 10044 - Socket type not supported
Socket error 10045 - Operation not supported
Socket error 10046 - Protocol family not supported
Socket error 10047 - Address family not supported by protocol family
Socket error 10048 - Address already in use
Socket error 10049 - Cannot assign requested address
Socket error 10050 - Network is down
Socket error 10051 - Network is unreachable
Socket error 10052 - Network dropped connection on reset
Socket error 10053 - Software caused connection abort
Socket error 10054 - Connection reset by peer
Socket error 10055 - No buffer space available
Socket error 10056 - Socket is already connected
Socket error 10057 - Socket is not connected
Socket error 10058 - Cannot send after socket shutdown
Socket error 10060 - Connection timed out
Socket error 10061 - Connection refused
Socket error 10064 - Host is down
Socket error 10065 - No route to host
Socket error 10067 - Too many processes
Socket error 10091 - Network subsystem is unavailable
Socket error 10092 - WINSOCK.DLL version out of range
Socket error 10093 - Successful WSAStartup not yet performed

Socket error 10094 - Graceful shutdown in progress
Socket error 11001 - Host not found
Socket error 11002 - Non-authoritative host not found
Socket error 11003 - This is a non-recoverable error
Socket error 11004 - Valid name, no data record of requested type


 
NeyroSpace ©   (2007-06-12 15:12) [6]

а где-нить есть полный пример использования IdTCPClient1/IdTCPServer1?
С получением потоков, с обработкой ошибок во время передачи?
Те примеры, что с Indy ну очень простые...


 
Орион ©   (2007-06-12 15:17) [7]

простота не означает убогость.


 
NeyroSpace ©   (2007-06-12 15:26) [8]

Я не говорю об убогости, я спрашиваю, где можно найти наиболее полные примеры по использованию INDY 10 (IdTCPClient1/IdTCPServer1)?


 
G_M_S ©   (2007-06-12 16:45) [9]


> Я не говорю об убогости, я спрашиваю, где можно найти наиболее
> полные примеры по использованию

Кста, мне тоже пример не понравился. Я вообще из Indy использую преимущественно idHTTP и тому подобные классы (для работы соккетами - TTCPClient/TTCPSrever), но было бы интересно взглянуть на хороший пример, раскрывающий все возможности idTCPClient/idTCPServer. Где нить есть такое?


 
Сатир   (2007-06-12 17:38) [10]


> но было бы интересно взглянуть на хороший пример, раскрывающий
> все возможности idTCPClient/idTCPServer.

поддерживаю.
Знатоки Indy 10! Выложите линк на хорошие сорцы по использованию этих компонент в десятой версии Инди. Плиз.


 
Орион ©   (2007-06-12 19:55) [11]

> [10] Сатир   (12.06.07 17:38)


небольшой сарказм в тему: даже разработчики Indy не знают как эту библиотеку использовать :))


 
G_M_S ©   (2007-06-13 09:31) [12]


> небольшой сарказм в тему: даже разработчики Indy не знают
> как эту библиотеку использовать

+1, по всей видимости. Хэлп скудноват, примеров толковых нет... Вот за это Индям большой минус. Сэмплы для Devexpress и EhLib не в пример красивее :)))


 
G_M_S ©   (2007-06-13 09:31) [13]

Удалено модератором
Примечание: Оффтоп...


 
Ypbi4 ©   (2007-06-15 13:29) [14]

Как то использвал компанент SNPP Indy 8 он корявый был (обрабочик с точностью наоборот обрабатывал события :) Если есть коннект физичеки то он говорил что ошибка и все вылетало) , все облазил, ничего понять сначал не мог, в конце концов поправил его ручками. Так вот там можно самому переделать компанент и обработчик ошибок :)
   if GetResponse([]) <> 220 then
   begin
     Обрабатываешь ошибку;  
   end;


 
Andyshark   (2007-06-25 02:10) [15]

По поводу сорцов - начал искать информацию как работать с Indy, нашел неплохую книжечку в электронном виде. Перевод Подгорецкого, название "Indy in Depth". Адрес точно не помню, но ссылка лежит на форуме forum.vingrad.ru, там в поиске найти можно думаю легко. Основная информация по 9-ке дана, но немного есть и по 10-ке. Честно хватило 2х часов чтобы все прочитать и написать работающую задачку.

И еще пример (опять же на 9-ке) есть на www.delphiplus.org. Хотя немного кривоватый, но общий принцип там понятен. http://www.delphiplus.org/articles/net/tcp-ip_information_interchange/index.html


 
Andyshark   (2007-06-25 02:11) [16]

Да и тут висит ссылка на эту книгу, счас заметил :-)



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

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

Наверх





Память: 0.49 MB
Время: 0.008 c
2-1203096893
hloppooop
2008-02-15 20:34
2008.03.16
TreeView random item color


15-1202484636
Cyrax
2008-02-08 18:30
2008.03.16
Рейтинг (популярность) сотовых телефонов...


2-1202891174
Troyan_81
2008-02-13 11:26
2008.03.16
рабочий стол


6-1182316588
Dmitriy_010
2007-06-20 09:16
2008.03.16
COM порт через Ethernet


11-1185431184
Vladimir Kladov
2007-07-26 10:26
2008.03.16
Версия 2.74





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