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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.034 c
14-1090322145
<DeL.>
2004-07-20 15:15
2004.08.08
Счетчик скачиваний на ПХП


14-1090580851
syte_ser78
2004-07-23 15:07
2004.08.08
День недели


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


6-1086689533
LeXXX
2004-06-08 14:12
2004.08.08
вопрос по Winsock


14-1090490977
ghg
2004-07-22 14:09
2004.08.08
рисование блок-схемы





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