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

Вниз

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

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

Наверх




Память: 0.46 MB
Время: 0.006 c
11-1204725355
andreil
2008-03-05 16:55
2009.10.04
Организовать правильную работу с потоками...


2-1249339340
bag
2009-08-04 02:42
2009.10.04
Помогите с if... then


1-1218039013
andreil
2008-08-06 20:10
2009.10.04
Быстрое сравнение строк?


15-1249126212
Kerk
2009-08-01 15:30
2009.10.04
Как пережить финансовый кризис?


2-1248893634
bag
2009-07-29 22:53
2009.10.04
copy в тексте





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