Algumas Dúvidas sorbe idTCPClient e idTCPServer!!
20/02/2006
0
Com o ClientSocket eu fazia assim para enviar um comando para o servidor...
ClientSocket1.Socket.SendText(Edit1.Text);
e no evento
procedure TfClient.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var sRecebe : String; begin sRecebe := Socket.ReceiveText; if sRecebe = ´#boot´ then //comandos para desligar o pc Listbox1.Items.Add(sRecebe); end;
para tratar a respota do servidor...
Como faço isso com idTCPClient...
eu olhei os exemplos da página [url]http://www.indyproject.org/Sockets/Demos/index.en.iwp[/url] mais não fiquei com essas dúvidas, alguém poderia me dar uma ajuda???
Paullsoftware
Posts
20/02/2006
Delphi32
Para enviar uma string para o servidor você usa no client:
TCPClient.WriteLn(´COMANDO´);
Quando o cliente envia a mensagem, o evento OnExecute do Servidor
é chamado. Você deve tratar o comando nesse evento:
var cmd:string;
begin
cmd := Athread.Connection.ReadLn;
end;
21/02/2006
Paullsoftware
21/02/2006
Paullsoftware
complementando a minha dúvida...
eu instalo nas estações o idTCPClient ou idTCPServer?
pq pela lógica os Clientes (idTCPClient) é que deveriam ser instalados nas estações e o servidor (idCTPServer) né isso...
sendo assim:
eu mando um comando do servidor (idCTPServer) para o cliente (idTCPClient) como faço para identificar e tratar esse comando no cliente?
21/02/2006
Massuda
Um exemplo que deve ser útil para você é o Chat.
21/02/2006
Paullsoftware
mais é justamente através dos exemplos que baixei que estou com essas dúvidas!
21/02/2006
Massuda
Para mandar do servidor para o cliente, talvez [url=http://forum.clubedelphi.net/viewtopic.php?t=70214]este tópico[/url] ajude você.
21/02/2006
Paullsoftware
certo massuda, foi de grande ajuda mais, ainda tenho não consegui solucionar todo meu problema... não sei se ainda não fui muito claro no que quero, vou tentar novamente...
tenho uma aplicação client (nas estações) e outra serv (no servidor) certo!
o meu problema é bem simples, digamos que o meu programa [b:e687cf1fab]client[/b:e687cf1fab] manda para o servidor o comando [b:e687cf1fab]Hora[/b:e687cf1fab] ele recebe, até ai tudo bem posso tratar no evento [i:e687cf1fab]OnExecute[/i:e687cf1fab] do meu [b:e687cf1fab]servidor [/b:e687cf1fab] e dar uma resposta certo?
mais como faço para no [b:e687cf1fab]client[/b:e687cf1fab] tratar o comando vindo do [b:e687cf1fab]servidor[/b:e687cf1fab]?
em que evento, metodo... essa é a minha dúvida!
deu pra entender agora? :cry:
eu consigo enviar um comando para o servidor, e consigo tb enviar uma resposta para o cliente. Só não consigo ler a resposta vinda do [b:e687cf1fab]servidor[/b:e687cf1fab] no meu [b:e687cf1fab]cliente[/b:e687cf1fab] :oops:
21/02/2006
Massuda
// exemplo de cliente enviando comando ao servidor procedure TForm2.PedeSnapshot(var ASnapshot: TBitmap); var Stream: TMemoryStream; Size: Integer; begin Stream := TMemoryStream.Create; try // envia comando IdTCPClient1.Writeln(´SNAPSHOT´); // pega a resposta, neste caso, vem em duas partes Size := IdTCPClient1.ReadInteger; IdTCPClient1.ReadStream(Stream, Size); // faz alguma coisa com a Stream finally Stream.Free; free; end;
21/02/2006
Paullsoftware
eu tenho sempre que tratar as duas partes, ou posso tratar somente com ReadLn??
21/02/2006
Massuda
Resumindo: depende unicamente das convenções que você adotou.
26/03/2006
Paullsoftware
// exemplo de cliente enviando comando ao servidor procedure TForm2.PedeSnapshot(var ASnapshot: TBitmap); var Stream: TMemoryStream; Size: Integer; begin Stream := TMemoryStream.Create; try // envia comando IdTCPClient1.Writeln(´SNAPSHOT´); // pega a resposta, neste caso, vem em duas partes Size := IdTCPClient1.ReadInteger; IdTCPClient1.ReadStream(Stream, Size); // faz alguma coisa com a Stream finally Stream.Free; free; end;
Massuda, resgatei mais um tópico, pois tentei, tentei e não consegui fazer...
no código acima vc está solicitando uma stream do cliente para o servidor, ou seja, a tela copiada será o server.
O que estou tentando fazer é o inverso, copiar uma imagem da tela da estação e mostrá-la no servidor, isso eu não consegui fazer...
olhei o exemplo que vem com o indy, mais não consegui fazer para capturar a tela do cliente e mostrar no servidor... um luz ae.. :idea: :idea: :idea:
26/03/2006
Kroki
[url]http://delphi.about.com/od/internetintranet/l/aa012004a.htm[/url]
Clique aqui para fazer login e interagir na Comunidade :)