Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.08.2016, 10:20
arman4587 arman4587 вне форума
Прохожий
 
Регистрация: 30.12.2015
Сообщения: 2
Версия Delphi: Delphi xe7
Репутация: 10
По умолчанию Поймать ошибку во время передачи при обрыве связи

Всем привет. Народ, подскажите как поймать ошибку при обрыве связи, во время приема файла от клиента на сервер?
Код:
    
var _FileName:WideString;
    _FileSize:Cardinal;
    _Client:LongInt;
    _BufSize: Integer;
    _Buffer: PChar;
    _Dummy: Cardinal;
begin
  if _Receiver then begin
  try
  _BufSize:=Socket.ReceiveLength;
  _Buffer:=GetMemory(_BufSize);
  try
    _BufSize:=Socket.ReceiveBuf(_Buffer^, _BufSize);
    WriteFile(FPipeWrite, _Buffer^, _BufSize, _Dummy, nil);
  finally
    FreeMemory(_Buffer);
  end;
  repeat
   _BufSize:=GetFileSize(FPipeRead, nil);
    if _BufSize = 0 then Break;
    if FDataLen=0 then
    begin
      if _BufSize<SizeOf(DWORD) then Break;
      ReadFile(FPipeRead, FDataLen, SizeOf(DWORD), _Dummy, nil);
      FDataRead:=0;
      FFileStream:=TFileStream.Create(_Out+_Tmp+'fc.zip', fmCreate);
   end else
    begin
      _Buffer:=GetMemory(_BufSize);
      try
        ReadFile(FPipeRead, _Buffer^, _BufSize, _Dummy, nil);
        FFileStream.Write(_Buffer^, _BufSize);
        Inc(FDataRead, _BufSize);
      finally
        FreeMemory(_Buffer);
      end;
    end;
  until
       FDataRead = FDataLen;
    if FDataRead = FDataLen  then  begin
       FFileStream.Free;
       FDataLen:=0;
       Jornal('ok',Unassigned,clRed);
      _Receiver:=False;
    end;
  except
   on e:Exception do begin
        _Receiver:=False;
        FFileStream.Free;
        FDataLen:=0;
        Socket.Destroy;
   Jornal(e.Message+' : '+e.ClassName,Unassigned,clRed);
  end;
  end;

try except не ловит из за Break-ов. а без break-ов висит
Ответить с цитированием
  #2  
Старый 13.08.2016, 18:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Функция с ошибкой возвратится.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 14.08.2016, 09:31
arman4587 arman4587 вне форума
Прохожий
 
Регистрация: 30.12.2015
Сообщения: 2
Версия Delphi: Delphi xe7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Функция с ошибкой возвратится.
можно по подробней?
Ответить с цитированием
  #4  
Старый 14.08.2016, 09:47
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Return value
If the function succeeds, the return value is nonzero (TRUE).
If the function fails, or is completing asynchronously, the return value is zero (FALSE). To get extended error information, call the GetLastError function.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter