Конференция "Сети" » Отправка данных через сокет в отдельном потоке
 
  • _DATA_ (08.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;



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

  • Сергей М. © (08.04.08 09:06) [1]

    > _DATA_   (08.04.08 08:54)


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

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

    http://pda.delphimaster.net/?id=1207564254&n=0

    Сначала исправь указанное там безобразие, потом дальше поедем)
  • DelphiN! (08.04.08 09:40) [2]

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



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

    А тему новую создал, так как всплыла новая проблема, которая как мне кажется больше связана с сетями ...
  • Сергей М. © (08.04.08 10:02) [3]

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


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

    http://pda.delphimaster.net/?id=1207564254&n=0

    ?
  • DelphiN! (08.04.08 10:06) [4]

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


    Установил StackSize в необходимый(статичный) размер, вроде работает все хорошо, спасибо, но вопрос из этой темы остаётся открытым )
  • Сергей М. © (08.04.08 10:08) [5]

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


    Тему можно смело закрывать - она обсуждается в "Основная".
 
Конференция "Сети" » Отправка данных через сокет в отдельном потоке
Есть новые Нет новых   [134431   +15][b:0][p:0.001]