Comando similiar ao Socket no Indy

Delphi

09/02/2007

Boa tarde,

Alguem poderi ajudar com o componente + o[u:b126c58ca5] comando [/u:b126c58ca5]que tem a mesma funcao do socket.sendtext(´texto) ?

Obrigado


Kitsystem

Kitsystem

Curtidas 0

Respostas

Massuda

Massuda

09/02/2007

O par básico do Indy é TIdTCPClient (lado cliente) e TIdTCPServer (lado servidor).

No caso do cliente, para escrever algo, use TIdTCPClient.Write ou TIdTCPClient.WriteLn.

Note que, geralmente, existe uma diferença básica entre o Indy e outros componentes de socket que é o fato do Indy usar IO síncrono enquanto outros componentes preferem IO assincrono. Por causa disso, em Indy quando você usa TIdTCPClient.WriteLn, esse método faz de fato a escrita dos dados e só retorna quando a escrita for concluída enquanto nos outros componentes geralmente tem algum evento que é disparado quando a escrita/leitura é completada (Indy não tem eventos desse tipo).


GOSTEI 0
Kitsystem

Kitsystem

09/02/2007

Massuda,

Muito obrigado, funcionou perfeitamente no Delphi e no Kylix com o comando IdTCPClient.Writeln(´protocolo´);

Mas nao consegui fazer o recebmento do pacote que pelo ClientScoket tem o evento OnRead que recebe qq byte

No Indy Client nao consegui fazer funcionar, testei alguns comandos e nada, percebi que tem alguns que colocam o terminador do campo etc etc, mas no meu caso eu fico recebendo de byte em byte

Se puder ajudar nesta dica, agradeco


GOSTEI 0
Massuda

Massuda

09/02/2007

Para ler: TIdTCPClient.Read ou TIdTCPClient.ReadLn. Exemplo (bem) básico:
var
  S: string;
...

IdTCPClient1.WriteLn(´PING´);

// espera a resposta do servidor
S := IdTCPClient1.ReadLn;
if S = ´PONG´ then ...



GOSTEI 0
POSTAR