Главная страница
    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.47 MB
Время: 0.105 c
2-1248940531
ford
2009-07-30 11:55
2009.10.04
Сохранить файл в ворде


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


15-1249035025
Mixa
2009-07-31 14:10
2009.10.04
Нужно написать ПО для флешки


2-1248776313
Кирей
2009-07-28 14:18
2009.10.04
ошибка при повторном открытиии ADOStoredProc


15-1249288550
blackman
2009-08-03 12:35
2009.10.04
Борис Стругацкий. Правила жизни





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