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

Вниз

Socket Error 10038   Найти похожие ветки 

 
Gek1   (2005-04-18 15:10) [0]

Ктото может разьяснить что ето за ошибка?
И где можно взять описание всех socket ошибок?


 
Digitman ©   (2005-04-18 15:32) [1]

значение параметра типа хэндл гнезда не являет собой значение хэндла реально существующего гнезда


 
Gek1   (2005-04-18 15:45) [2]

Хорошо .. а 10057 ... 10061 ?
Причина может быть в качестве связи или в программе?


 
easy ©   (2005-04-18 15:59) [3]

showmessage(syserrormessage(10061));


 
Gek1   (2005-04-18 16:05) [4]

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


 
Digitman ©   (2005-04-18 16:15) [5]

полный список winsock-отказов тебе ничего не даст
нужно четко понимать, какие конкретно отказы ассоциированы с тем или иным ВинСок-вызовом

впрочем "краткий список" для Winsock 1.1 Борланд тебе предоставил - модуль Winsock.pas, искать по ключ.слову "baseerr"


 
Gek1   (2005-04-18 17:12) [6]

Еще такой вопрос:

Есть у меня GameSocket - указатель на TClientSocket:
В случае если я ловлю ошибку а после обработки ошибки я хочу заново установить связь - как правильно делать:

Вариант а:
Просто GameSocket.Disconnect и потом GameSocket.Connect

Вариант б:
GameSocket.Disconect;
GameSocket.Free;
GameSocket := TSocketClient.Create(nil);
GameSocket.Connect;

Подразумевается что:
1. я обработаю ошибку и установлю ErrorCode := 0;
2. метод Connect будет выполнятся в блоке try ... except.

Так какой вариант правильнее?
(Если третий - то прозьба код и коментарии)


 
Digitman ©   (2005-04-18 17:19) [7]


> после обработки ошибки


обработка ошибки вовсе не обязательно ведет за собой разрыв коннекта по инициативе обработчика ошибки

все зависит от логики обработчика


 
Gek1   (2005-04-18 17:28) [8]


> Digitman ©   (18.04.05 17:19) [7]

После каких ошибок необходимо рвать связь и после каких нет необходимости?

Как правильно построить логику обработчика?


 
Digitman ©   (2005-04-18 17:44) [9]


> Gek1   (18.04.05 17:28) [8]


не посмотреть ли тебе соотв. реализацию в модуле scktcomp.pas ?
в нем все это сделано крайне грамотно и крайне корректно ..


 
Gek1   (2005-04-19 12:15) [10]

Может ктото выложить этот файл в интернете? например на http://www.webfile.ru/ ...
Охота посмотреть, но у меня D2005 и его там нету.


 
Digitman ©   (2005-04-19 12:27) [11]

function TCustomWinSocket.ReceiveBuf(var Buf; Count: Integer): Integer;
var
 ErrorCode: Integer;
begin
 Lock;
 try
   Result := 0;
   if (Count = -1) and FConnected then
     ioctlsocket(FSocket, FIONREAD, Longint(Result))
   else begin
     if not FConnected then Exit;
     Result := recv(FSocket, Buf, Count, 0);
     if Result = SOCKET_ERROR then
     begin
       ErrorCode := WSAGetLastError;
       if ErrorCode <> WSAEWOULDBLOCK then
       begin
         Error(Self, eeReceive, ErrorCode);
         Disconnect(FSocket);
         if ErrorCode <> 0 then
           raise ESocketError.CreateResFmt(@sWindowsSocketError,
             [SysErrorMessage(ErrorCode), ErrorCode, "recv"]);
       end;
     end;
   end;
 finally
   Unlock;
 end;
end;


 
Gek1   (2005-04-19 12:45) [12]

if ErrorCode <> 0 then
          raise ESocketError.CreateResFmt(@sWindowsSocketError,
            [SysErrorMessage(ErrorCode), ErrorCode, "recv"]);

получается если я после обработчика не установлю ErrorCode:=0, то выползет окно с ошибкой.

if ErrorCode <> WSAEWOULDBLOCK then
Если ошибка равна WSAEWOULDBLOCК, то он не считает за ошибку? А что это за тип таких ошибок?

И в случае если я рву связь - какой вариант предпочителен для моего случая? Вариант А или Б?


> обработка ошибки вовсе не обязательно ведет за собой разрыв
> коннекта по инициативе обработчика ошибки

Судя по коду - дисконнект произойдет сам не зависимо от того хочу я или нет. и мне дисконнект делать уже нет необходимости?

Что-то я слегка запутался. Кто-то может мне помочь расставить все по полочкам?


 
Digitman ©   (2005-04-19 12:55) [13]

см. http://book.itep.ru, раздел Winsock
там все тебя интересующее достаточно подробно описано и разжевано


 
Gek1   (2005-04-19 13:20) [14]

спасибо. :-)



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

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

Наверх




Память: 0.48 MB
Время: 0.046 c
3-1119343319
jiny
2005-06-21 12:41
2005.07.31
Как правильно сделать ID документа с префиксом (ЖАС-3420)?


11-1103387164
gsv
2004-12-18 19:26
2005.07.31
Как изменить цвет выделенного элемента в TKolTreeView ?


1-1121171705
race1
2005-07-12 16:35
2005.07.31
Перемещение панели


3-1119447236
zorik
2005-06-22 17:33
2005.07.31
sql - запись с максимальным элементом


14-1120102166
cyborg
2005-06-30 07:29
2005.07.31
Socket 754 vs Socket 939





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