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

Вниз

Поведение сокета при отправке данных   Найти похожие ветки 

 
VID ©   (2004-06-06 14:38) [0]

Есть соединение клиента с сервером. Находятся на разных машинах, в разных сетях.

Внезапно сервер был выключен, даже можно сказать "убит" (принудительное завершение процесса).

И клиент думает что он до сих пор подключён к серверу.

Вопрос: что произойдёт при попытке отправки данных этим клиентом, уже не существующему серверу методом
Client.Socket.SendText() ?

Сгенерирует ли клиент событие OnError , или же всё произойдёт тихо, так будто бы всё нормально ?

If an error occurs while writing to the connection, SendText terminates the connection and raises an ESocketError exception. Не вселяет особого оптимизма.

Вот реализация отправки данных:

function TCustomWinSocket.SendBuf(var Buf; Count: Integer): Integer;
var
 ErrorCode: Integer;
begin
 Lock;
 try
   Result := 0;
   if not FConnected then Exit;
   Result := send(FSocket, Buf, Count, 0);
   if Result = SOCKET_ERROR then
   begin
     ErrorCode := WSAGetLastError;
     if (ErrorCode <> WSAEWOULDBLOCK) then
     begin
       Error(Self, eeSend, ErrorCode);
       Disconnect(FSocket);
       if ErrorCode <> 0 then
         raise ESocketError.CreateResFmt(@sWindowsSocketError,
           [SysErrorMessage(ErrorCode), ErrorCode, "send"]);
     end;
   end;
 finally
   Unlock;
 end;
end;


Result := send(FSocket, Buf, Count, 0);
Если ли гарантия что send вернёт SOCKET_ERROR в описанном выше случае ?

И ещё, что такое WSAEWOULDBLOCK ? (if (ErrorCode <> WSAEWOULDBLOCK) then)


 
VID ©   (2004-06-06 14:41) [1]

Клиент неблокирующий. Сервер тоже.


 
Digitman ©   (2004-06-07 08:13) [2]


> Если ли гарантия что send вернёт SOCKET_ERROR в описанном
> выше случае ?


есть


> что такое WSAEWOULDBLOCK


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



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

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
6-1086193906
neteditor
2004-06-02 20:31
2004.08.08
TThread.Suspend и TWinSocketStream.TimeOut


3-1089748306
Bizon's
2004-07-13 23:51
2004.08.08
Проблемы UDF


14-1090415669
Dimka Maslov
2004-07-21 17:14
2004.08.08
Degauss


1-1090875187
ANT
2004-07-27 00:53
2004.08.08
Размер имеет значение!


9-1082999350
20002
2004-04-26 21:09
2004.08.08
паросочетания