TcpClient e TcpServer
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
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
Curtidas 0
Respostas
Massuda
08/06/2006
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.
GOSTEI 0
Lnunes
08/06/2006
É 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.
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.
GOSTEI 0
Massuda
08/06/2006
//---> 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; ...
GOSTEI 0
Lnunes
08/06/2006
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.
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.
GOSTEI 0
Massuda
08/06/2006
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.
GOSTEI 0
Lnunes
08/06/2006
Massuda já conseguir solucionar a questão, mais uma vez obrigado pela ajuda.
GOSTEI 0