Fórum TcpClient e TcpServer #323086

08/06/2006

0

Estou tentando fazer um chat com o componente TcpClient e TcpServer da paleta Internet, contudo estou encontrando dificuldade pois só estou conseguindo vizualizar no memo as respostas dos outros quando gostaria de vizualizar as minhas perguntas também.

Exemplo:

<Lnunes> Diz - ...........................
<Usuário>Diz - ...........................
<Lnunes> Diz - ...........................

Como Está:
<Usuário>Diz - ...........................
<Usuário>Diz - ...........................
<Usuário>Diz - ...........................

Desde já agradeço a atenção


Lnunes

Lnunes

Responder

Posts

08/06/2006

Massuda

Não sei se entendi direito, mas você não recebe o que você transmite. Você precisa lembrar na rotina de envio de texto de atualizar o memo também.


Responder

Gostei + 0

08/06/2006

Lnunes

É exatamente isto eu não consigo vizualizar o que transmitir, o problema é que eu fiz este chat tendo como base o exemplo da pasta demo do delphi, e não sei quase nada de programação utilizando soquetes caso possa me auxiliar como está questão ficaria grato.

Código que estou utilizando:

---> Evento onAccept do componente TcpServer


procedure TF_Chat.ServidorAccept(Sender: TObject;
ClientSocket: TCustomIpClient);
Var
Texto:string;
DataThread: TClientDataThread;
begin
DataThread:= TClientDataThread.Create(True);
DataThread.ListBuffer.Add(ClientSocket.LookupHostName(ClientSocket.RemoteHost));
DataThread.TargetList := MM_Receber.lines;
Texto := ClientSocket.Receiveln;
while Texto <> ´´ do
begin
DataThread.ListBuffer.Add(Texto);
Texto := ClientSocket.Receiveln;
end;
DataThread.Resume;
end;


---> Evento onClick do botão enviar

Var
I:Integer;
vHost,vRemota:String;
begin
vIniFile:=TIniFile.Create(´C:\WINDOWS\MENSAGEIRO.INI´);
vHost:=vIniFile.ReadString(´CONEXAO´,´HOST´,´´);
vRemota:=vIniFile.ReadString(´CONEXAO´,´PORTA_REMOTA´,´´);

Cliente.RemoteHost := vHost;
Cliente.RemotePort := vRemota;
Try
If Cliente.Connect Then
For I := 0 to MM_Enviar.Lines.Count - 1 do
Begin
Cliente.Sendln(MM_Enviar.Lines[I]);
End;
MM_Enviar.Text:=´´ ;
MM_Enviar.SetFocus;
Finally
Cliente.Disconnect;
End;
vIniFile.Free;

Obs: Cliente é o componente TcpCliente


Desde já agradeço a atenção de todos.


Responder

Gostei + 0

08/06/2006

Massuda

//---> Evento onClick do botão enviar 
...
  For I := 0 to MM_Enviar.Lines.Count - 1 do 
  Begin 
    Cliente.Sendln(MM_Enviar.Lines[I]); 
    MM_Receber.Add(´Eu: ´  + MM_Enviar.Lines[I]); 
  End; 
...



Responder

Gostei + 0

08/06/2006

Lnunes

Massuda muito obrigado pela ajuda.

aproveitando o tópico estes componentes permitem a criação de um nome de usuário para substituir o nome do computador?

Exemplo:

<Servidor Diz>__________ -----> <Maria Diz> _______________
<Notebook Diz>__________ -----> <João Diz> ________________


Desde já agradeço a atenção de todos.


Responder

Gostei + 0

08/06/2006

Massuda

Não uso esses componentes, não tenho idéia de como fazer isso, mas geralmente se inclui um comando de login de modo que você pode montar uma lista relacionando IP/porta-usuário e assim fazer o que você quer.


Responder

Gostei + 0

08/06/2006

Lnunes

Massuda já conseguir solucionar a questão, mais uma vez obrigado pela ajuda.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar