Ir al contenido


Foto

Migrando de Indy 9 a Indy 10


  • Por favor identifícate para responder
5 respuestas en este tema

#1 edgwin

edgwin

    Member

  • Miembros
  • PipPip
  • 30 mensajes
  • LocationMexico

Escrito 26 julio 2010 - 04:33

Que tal amigos del Foro.

Tengo un pequeño problema tratando de migrar de Indy 9 a Indy 10....

el codigo es el siguiente:



delphi
  1.   ...
  2.   PCLocal := AThread.Connection.LocalName;



En Indy 10 este codigo me marca error ¿Alguien sabe como obtener el nombre del equipo remoto con Indy 10?

Saludos!
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 26 julio 2010 - 04:52

En Indy 10 ya no se usa AThread se utiliza AContext

No se si esto te sirva



delphi
  1. PCLocal := AContext.Connection.Socket.Binding.PeerIP;
  2.  
  3. // o esto
  4.  
  5. PCLocal := AContext.Connection.Socket.Binding.IP;



Salud OS
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 26 julio 2010 - 04:54

Por cierto

Bienvenido a DelphiAccess, sientete en tu casa :)

Salud OS
  • 0

#4 edgwin

edgwin

    Member

  • Miembros
  • PipPip
  • 30 mensajes
  • LocationMexico

Escrito 27 julio 2010 - 01:00

Gracias por la bienvenida.

Referente a la respuesta .... lo que intento que me regrese es el nombre del equipo remoto, no la IP (ya que en Indy 9 de esta manera "Thread.Connection.LocalName;" me dice el nombre del equipo remoto).

Saludos!
  • 0

#5 Jagluiperd

Jagluiperd

    Member

  • Miembros
  • PipPip
  • 36 mensajes
  • LocationBuscando a Wally

Escrito 31 agosto 2010 - 05:03

Hola.

Quizás esto te pueda servir:



delphi
  1. {...}
  2.  
  3. Var
  4.   Version_Protocolo_IP  : TiDIPVersion;
  5.   IP_PC_Remoto          : String;
  6.   Nombre_PC_Remoto      : String;
  7.  
  8.  
  9. {...} 
  10.  
  11.   Version_Protocolo_IP:= {Puedo tomar estos valores constantes: Id_Ipv4 ó Id_Ipv6}
  12.   IP_PC_Remoto:=AContext.Connection.Socket.Binding.PeerIP;
  13.   Nombre_PC_Remoto:= GStack.HostByAddress(IP_PC_Remoto, Version_Protocolo_IP);
  14.  
  15. {...}



Saludos.
  • 0

#6 genyus00

genyus00

    Advanced Member

  • Miembros
  • PipPipPip
  • 52 mensajes
  • LocationBogota

Escrito 01 abril 2011 - 08:42

hola buenas actualmente estoy usando los indy en version 10.5.7, previamente habia desarrollado una aplicacion cliente y una servidor con TcpClient y TcpServer pues en mi version indy 9 corre todo bien, pero en en el paso a la version 10.5.7 tengo problemas leyendo y escribiendo mensajes.

ANTES


delphi
  1. //leer comandos ejcutados
  2. procedure TClienteHilo.Execute;
  3. begin
  4. while not Terminated do
  5.   if not FrmTablero.tcpClient.Connected then
  6.       Terminate
  7.   else
  8.       try //leer buffer de mensajes
  9.       FrmTablero.tcpClient.ReadBuffer(Paquete, SizeOf (Paquete));
  10.       Synchronize(HandleInput);//mostrar mensaje en la terminal
  11.       except
  12.       if FrmTablero<>nil then
  13.         FrmTablero.Terminal.Lines.Add('<'+Formatdatetime('HH:mm:ss',Time)+' - '+FormConexion.tNomUsuario.Text+'> Dice: No se pueden enviar mensajes. La conexión con el servidor ha fallado.');
  14.       end;
  15. end;



DE ACUERDO A LO QUE HE LEIDO EN INDY 10 DEBE SER


delphi
  1. procedure TClienteHilo.Execute;
  2. Var
  3. RxBuf : TIdBytes;
  4. begin
  5. while not Terminated do
  6.   if not FrmTablero.tcpClient.Connected then
  7.       Terminate
  8.   else
  9.       try //leer buffer de mensajes
  10.       FrmTablero.tcpClient.IOHandler.ReadBytes(RxBuf, SizeOf (Paquete));
  11.       BytesToRaw(RxBuf,Paquete, SizeOf (Paquete));
  12.  
  13.       Synchronize(HandleInput);//mostrar mensaje en la terminal
  14.       except
  15.       if FrmTablero<>nil then
  16.         FrmTablero.Terminal.Lines.Add('<'+Formatdatetime('HH:mm:ss',Time)+' - '+FrmConexion.tNomUsuario.Text+'> Dice: No se pueden enviar mensajes. La conexión con el servidor ha fallado.');
  17.       end;
  18. end;



No si esto funcione dado que al compilar me envia:
[DCC Error] UFrmTablero.pas(341): E2003 Undeclared identifier: 'TIdBytes'
[DCC Error] UFrmTablero.pas(349): E2003 Undeclared identifier: 'BytesToRaw'

he buscado el equivalennte a 'TIdBytes' y 'BytesToRaw' pero nada, si alguien tiene una solucion aplicada agradeceria su ayuda..

  • 0




IP.Board spam blocked by CleanTalk.