Ir para conteúdo
Fórum Script Brasil

marcos49ers

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Posts postados por marcos49ers

  1. Abrindo Threads você não fica mais amarrado no evento onAccept e tb não precisa mais utilizar o evento onClientRead.

    Desabilite o evento onClientRead e defina a Thread:

    type TSock_Thread = class(TThread)
           private
             Socket :TCustomWinSocket;
           public
             constructor Create(aSocket:TCustomWinSocket);
             procedure   Execute; override;
    end;
    Na Implementation:
    constructor TSock_Thread.Create(aSocket:TCustomWinSocket);
    begin
      inherited Create(true); // cria suspensa
      Socket := aSocket; // passa o Socket
      FreeOnTerminate := true; // libera automaticamente
    end;
    
    procedure TSock_Thread.Execute;
    var s:String;
    begin
      While not Terminated and Socket.Connected do
      begin
        if Socket.ReceiveLength > 0 then // evita o evento onClientRead
        begin
          s := Socket.ReceiveText; // recebe
          Socket.SendText(s); // envia
        end;
        Sleep(1); // evita a CPU ficar em 100%
      end;
    end;
    No evento onAccept:
    procedure TForm1.ServerSocket1Accept(Sender: TObject;
      Socket: TCustomWinSocket);
    var TST:TSock_Thread;
    begin
      TST := TSock_Thread.Create(Socket); // instancia o objeto
      TST.Resume; // coloca a Thread em execução
    end;

    Notei que você utiliza a propriedade Connections; vale uma dica de que se um Client se desconectar de forma anormal, essa propriedade não é atualizada de imediato.

    Deu certo muito obrigado

  2. Eu jogo os comandos que eu quero dentro do OnAccept do seversocket, pois os comandos que eu quero estao dentro de OnClientRead, os comandos seguem:

    S1 := Socket.ReceiveText;

    // Envia dados recebidos de volta

    ServerSocket.Socket.Connections[0].SendText(S1);

    Como faço pra criar um novo thread para cada nova conexao que entra, pois não sei o numero de clientes que conectarão, posso ter por exemplo 2 cliente conectados ao mesmo tempo e mais 4 conectarem.

  3. Tenho um sistema rodando que recebe um texto diferente de cada cliente conectado e preciso reenviar o texto recebido para cada cliente, como faço pra responder cada cliente com sua respectiva resposta, quando tenho mais de um cliente conectado as respostas são enviadas erradas

×
×
  • Criar Novo...