PDA

Ver la Versión Completa : Saber Ip de una PC???


JELIRM
09-06-2006, 20:38:18
hola, foro.

Saben como hacer para una saber la ip y de una maquina en una red??.
lo que quiero hacer especificamente es poner este programa(Identificador de Ips) en un servidor, y cuando una maquina X(Cliente) corra este programa el servidor diga que ip fue la que dio esa peticion..
ya sea en codigo delphi o ensamblador..


me ayudan porfavor..

de antemano gracias.


//Las caidas te hacen aprender a caminar

Sotrono
09-06-2006, 20:56:33
Hola, qué tal si te das una vuelta por el buscador del foro (http://www.clubdelphi.com/foros/search.php)??

Saludos!!

JELIRM
09-06-2006, 22:10:17
SI YA BUSQUE, pero no es lo que quiero.
lo que yo quiero es un preograma proveedor de numeros ips a otras(Clientes) conectadas donde esta el servidor, esto lo he logrado hacer con un bat, pero lo quiero hacer con un programa ya que un bat no es seguro porque lo pueden modificar el codigo bat es el siguiente:

@echo.
@ipconfig | find "IP Address"
@echo.
@pause

este codigo lo tengo en un archivo bat en el servidor, y desde una cliente lo ejecuto y el servidor devuelve el numero ip pero de la cliente, y esto mismo lo quiero hacer pero en un programa ya sea de delphi o ensamblador
alguien sabe como??

CCCP
02-07-2006, 00:27:41
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
Function GetIp(var Host:String):String;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
Uses WinSock;
{$R *.dfm}
Function TForm1.GetIp(var Host:String):String;
type
TAPInAddr = Array[0..100] of PInAddr;
PAPInAddr = ^TAPInAddr;
var
WSAData: TWSAData;
HostEntPtr: PHostEnt;
pptr: PAPInAddr;
i,iPos: Integer;
begin
Result:='';
If Host <> '' then Begin
WSAStartUp( $101, WSAData );
HostEntPtr := GetHostByName( PChar( Host ) );
if HostEntPtr = NIL then GetIp:='';
If Assigned(HostEntPtr) then Begin
pptr := PAPInAddr( HostEntPtr^.h_addr_list );
i := 0;
while pptr^[i] <> NIL do begin
Result:=inet_ntoa( pptr^[i]^ );
Inc( i );
end;
end;
WSACleanUp();
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var Host:String;
begin
Host:='HOST';
Showmessage(GetIp(Host))
end;
end.

nemesio
02-07-2006, 22:28:38
Revisa este viejo truco de autoría de Borland.


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
//De las Faq's de Borland)

//El ejemplo siguiente requiere el uso del API Winsock incorporado en el
//WinSock.pas
uses
WinSock;

procedure GetHostInfo(var Name, Address: string);
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
{ no error checking...}
WSAStartup(2, WSAData);
SetLength(Name, 255);
Gethostname(PChar(Name), 255);
SetLength(Name, StrLen(PChar(Name)));
HostEnt := gethostbyname(PChar(Name));
with HostEnt^ do
Address := Format('%d.%d.%d.%d',[
Byte(h_addr^[0]),
Byte(h_addr^[1]),
Byte(h_addr^[2]),
Byte(h_addr^[3])]);
WSACleanup;
end;