Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
1-1121159937
Goorus
2005-07-12 13:18
2005.07.31
Несколько вопросов по работе с вещественными числами


1-1121291309
Ibrox
2005-07-14 01:48
2005.07.31
Новое окно браузера


14-1120931664
Piter
2005-07-09 21:54
2005.07.31
RTTI?


4-1117804136
Fedor
2005-06-03 17:08
2005.07.31
пропало окно программы, помогите найти, плз


4-1117784323
al_mt
2005-06-03 11:38
2005.07.31
Проблемы с PrintScreen