![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отправка данных через сокет в отдельном потоке
_DATA_ © (2008-04-08 08:54:00)Есть событие 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 10:08:00) [1]
> вопрос из этой темы остаётся открытым
Тему можно смело закрывать - она обсуждается в "Основная".
DelphiN! (2008-04-08 10:06:00) [2]
> Сергей М. © (08.04.08 10:02) [3]
Установил StackSize в необходимый(статичный) размер, вроде работает все хорошо, спасибо, но вопрос из этой темы остаётся открытым )
Сергей М. (2008-04-08 10:02:00) [3]
> DelphiN! (08.04.08 09:40) [2]
Ты вообще вник в
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1207564254&n=0
?
DelphiN! (2008-04-08 09:40:00) [4]
> Сергей М. © (08.04.08 09:06) [1]
> Шифруешься, DelphiN ?)
:)) Нет просто в другом браузере раньше сидел под этим ником :)
А тему новую создал, так как всплыла новая проблема, которая как мне кажется больше связана с сетями ...
Сергей М. (2008-04-08 09:06:00) [5]
> _DATA_ (08.04.08 08:54)
Шифруешься, DelphiN ?)
Вот же твоя ветка:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1207564254&n=0
Сначала исправь указанное там безобразие, потом дальше поедем)