Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Uso de sockets (https://www.clubdelphi.com/foros/showthread.php?t=50268)

vejerf 13-11-2007 16:40:27

Uso de sockets
 
Hola, estoy realizando una aplicacion que es un servidor que acepta conexiones de uno o varios clientes. Estoy usando el componente Indy TIdTCPServer. Me gustaria saber si hay forma de averiguar (q supongo q debe haberla) el host del cliente asi como otros datos que puedan ser de interes.
Si sabeis algo ayudadme please :rolleyes:
Gracias a todos...

fide 14-11-2007 05:34:24

Usar los Sockets de la Indy!
 
Oyeme, por que al conectarte no le envias al servidor todas las informaciones que el necesite mediante la intruccion WriteLn??

Asi le enviarias todos los datos ya directamente!

Ejemplo:

Insertas un idTCPClient y un idTCPServer.

Esto lo pones en el OnClick de un Boton u otro evento...

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 vIp, vName, vCommand: String;
begin

  vIp := '127.0.0.1';
  vName := 'localhost';
  vCommand := 'logoff';

  with IdTCPClient1 do
   begin
    Host := '127.0.0.1';
    Port := 7099;
    Connect;
   end;

   if IdTCPClient1.Connected then
    begin
      IdTCPClient1.WriteLn(vIp);
      IdTCPClient1.WriteLn(vName);
      IdTCPClient1.WriteLn(vCommand);
      IdTCPClient1.Disconnect; 
    end;

end;

Esto lo pones en el OnExecute del idTCPServer

Código Delphi [-]
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
 vIp, vName, vCommand: String;
begin

  vIp := AThread.Connection.ReadLn;
  vName := AThread.Connection.ReadLn;
  vCommand := AThread.Connection.ReadLn;

  AThread.Connection.Disconnet;

  ShowMessage(vIp + #10 + vName + #10 + vCommand);

end;

Esto es solo una idea. Pero puedes continuar preguntando si necesitas algo okas...

vejerf 14-11-2007 11:15:38

Cita:

Empezado por fide (Mensaje 245997)
Pero puedes continuar preguntando si necesitas algo okas...

Pues te tomo la palabra jeje... Ante todo muchas gracias por tu respuesta... pero no puedo hacer lo q me planteas... el por qué es muy facil y es que yo no controlo el cliente... yo solo estoy realizando el servidor... los clientes serán una serie de localizadores fabricados por sabe Dios que fabricante y eso... Por eso pregunto si es posible averiguar el host del cliente una vez se ha conectado... Estos clientes se conectan encima por GPRS aunque supongo q al fin y al cabo el tratamiento del socket será el mismo digo yo :p... Otra pregunta: ¿El metodo OnExecute cuando se ejecuta?
Muchas gracias por todo fide ;)

tefots 15-11-2007 21:44:16

se puede

cuando recibas el onconnect
accedes a athread.Connection.Socket.Binding.PeerIP y athread.Connection.Socket.Binding.PeerIP, y ya tienes la ip remota del cliente y el puerto que usa para conectar.

tambien puedes resolver el nombre , creo que con gstack , o con dnsresolver no estoy seguro

saludos.


La franja horaria es GMT +2. Ahora son las 23:25:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi