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

Вниз

Отправка данных через сокет в отдельном потоке   Найти похожие ветки 

 
_DATA_   (2008-04-08 08:54) [0]

Есть событие TServerSocket-a OnClientRead

type
 TSendStreamParam = record
   Socket: TCustomWinSocket;
   Stream: TStream;
 end;
var
 SendStreamParam: TSendStreamParam;
 SendStreamCriticalSection: TCriticalSection;

procedure TMain.ServerSocketClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
var
 Stream: TStream;
begin
 ...
 SendStream(Socket,Stream);
 ...
 SendStream(Socket,Stream);
 ...
 Socket.Close;
 Socket.Free;
end;

procedure SendStream(Socket: TCustomWinSocket; Stream:  TStream);
var
 c: Cardinal;
begin

 SendStreamParam.Socket := Socket;
 SendStreamParam.Stream := Stream;
 BeginThread(nil,SizeOf(SendStreamParam),@SendS,@SendStreamParam,0,c);
end;

procedure SendS(Par: Pointer);
var
 i: integer;
 buff: array[0..65536] of byte;
 p: ^TSendStreamParam;
 Socket: TCustomWinSocket;
begin
 try
   SendStreamCriticalSection.Enter;
   try
     p := Par;
     p.Stream.Position:=0;
     repeat
       i:=p.Stream.Read(buff,SizeOf(buff));
       while p.Socket.SendBuf(buff,i)=-1 do
     until i=0;
     p.Stream.Free;
   except
     //
   end;
 finally
   SendStreamCriticalSection.Leave;
 end;
end;



Однако к тому времени когда последний(дочерний) поток начинает отправлять данные через сокет основной поток этот сокет уже закрывает. Как разрешить ситуацию?


 
Сергей М. ©   (2008-04-08 09:06) [1]


> _DATA_   (08.04.08 08:54)


Шифруешься, DelphiN ?)

Вот же твоя ветка:

http://delphimaster.net/view/1-1207564254/

Сначала исправь указанное там безобразие, потом дальше поедем)


 
DelphiN!   (2008-04-08 09:40) [2]


> Сергей М. ©   (08.04.08 09:06) [1]
> Шифруешься, DelphiN ?)



:)) Нет просто в другом браузере раньше сидел под этим ником :)

А тему новую создал, так как всплыла новая проблема, которая как мне кажется больше связана с сетями ...


 
Сергей М. ©   (2008-04-08 10:02) [3]


> DelphiN!   (08.04.08 09:40) [2]


Ты вообще вник в

http://delphimaster.net/view/1-1207564254/

?


 
DelphiN!   (2008-04-08 10:06) [4]


> Сергей М. ©   (08.04.08 10:02) [3]


Установил StackSize в необходимый(статичный) размер, вроде работает все хорошо, спасибо, но вопрос из этой темы остаётся открытым )


 
Сергей М. ©   (2008-04-08 10:08) [5]


> вопрос из этой темы остаётся открытым


Тему можно смело закрывать - она обсуждается в "Основная".



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
2-1249027346
xyz
2009-07-31 12:02
2009.10.04
из-за чего ADOCommand1.Execute выдает 1 запись, когда их много


2-1249040793
Zheksonz
2009-07-31 15:46
2009.10.04
Выгружаю процесс, аиконкапроболжает висеть на TaskBar


6-1207630477
_DATA_
2008-04-08 08:54
2009.10.04
Отправка данных через сокет в отдельном потоке


9-1182518381
@!!ex_
2007-06-22 17:19
2009.10.04
Проецирование 3Д в 2Д.


15-1249417804
Юрий
2009-08-05 00:30
2009.10.04
С днем рождения ! 5 августа 2009 среда