Ir para conteúdo
Fórum Script Brasil
  • 0

Thread e Socket :/


Sled

Pergunta

Bom dia pessoal criei o seguinte código para criar uma Thread para cada conexão feita em meu servidor

unit serverthread;

interface

uses
   windows, scktcomp, SysUtils, Classes, Forms;
Type
  EServerThread = class(Exception);
// O ServerThread é um descendente do
// TServerClientThread
  TServerThread2 = class(TServerClientThread)
  private
  //
  protected
  procedure ClientExecute; override;
// O ClientExecute substitui o
// TServerClientThread.ClientExecute
// E contém o código real que é
// Executado quando a thread é iniciada
 end;

implementation

{
  Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure ServerThread.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; 
    
    or 
    
    Synchronize( 
      procedure 
      begin
        Form1.Caption := 'Updated in thread via an anonymous method' 
      end
      )
    );
    
  where an anonymous method is passed.
  
  Similarly, the developer can call the Queue method with similar parameters as 
  above, instead passing another TThread class as the first parameter, putting
  the calling thread in a queue with the other thread.
    
}

{ ServerThread }

procedure TServerThread2.ClientExecute;
Var
RecText:String;
Chegou:Boolean;
begin
inherited FreeOnTerminate := True;

while not Terminated and ClientSocket.Connected do
    begin
try
// Evita usar 99% do processador
 sleep(1);
// Verifica se chegou os dados
//Equivale ao on ready :D
 if ClientSocket.ReceiveLength > 0 then
 begin
//Verifica se o client ainda esta conectado se
//sim retorna a mensagem que ele enviou :D
 if ClientSocket.Connected = true then
 begin
 RecText := ClientSocket.ReceiveText;
 ClientSocket.SendText(RecText);
 end
 else
 begin
   ClientSocket.Close;
  Terminate;
 end;
 end;

Except
  ClientSocket.Close;
  Terminate;
end;
     end;
  ClientSocket.Close;
  Terminate;
end;

end.

Tá meio bagunçado mas em fim : Quando alguém conecta ao meu servidor ele cria um Thread para aquele visitante e o socket da thread herda as propriedades do socket principal. Minha duvida é o seguinte como faço para que o socket ou as thread se interaja entre eles ?

Por exemplo o cliente 1 manda a mensagem "Ola" ao cliente 2 e somente o cliente 2 recebera o olá como fazer isso se ele estar em uma Thread distinta ?

Editado por Sled
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...