Главная страница
    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
15-1249145240
@!!ex
2009-08-01 20:47
2009.10.04
Как прошивать Аладиновские ключи??


3-1227778244
vegarulez
2008-11-27 12:30
2009.10.04
Вопрос про ZeosDBO. (Zquery.Fields[i].AsDatetime)


2-1248674704
aza
2009-07-27 10:05
2009.10.04
ADO MS Jet прочитать не-коммитет данные


2-1248854287
xyz
2009-07-29 11:58
2009.10.04
исключение "недопустимое имя"


2-1248944979
_drug_
2009-07-30 13:09
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский