DELPHI如何获得客户端IP!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 在DELPHI里如何获得客户端的IP呢?有像JAVA里面request.getRemoteAddr()函数吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 事实上就是获得装了我DELPHI程序的电脑上的IP HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces里面去取一下看看 function G_GetLocalHostName(): string;var wVersionRequested: WORD; wsaData: TWSAData; p: PHostEnt; s: array[0..128] of char;begin result := ''; try wVersionRequested := MAKEWORD(1, 1); WSAStartup(wVersionRequested, wsaData); GetHostName(@s, 128); p := GetHostByName(@s); result := p^.h_Name; WSACleanup; except end;end;function G_GetLocalHostIp(): string;var wVersionRequested: WORD; wsaData: TWSAData; p: PHostEnt; s: array[0..128] of char;begin result := ''; try wVersionRequested := MAKEWORD(1, 1); WSAStartup(wVersionRequested, wsaData); GetHostName(@s, 128); p := GetHostByName(@s); result := inet_ntoa(PInAddr(p^.h_addr_list^)^); WSACleanup(); except end;end;客户端登录时,账号密码验证通过后,把自己的IP提交给服务端做处理就可以了。 lynmison 按照你上面的运行,他在wsaData: TWSAData; 这里就报[Error] Unit1.pas(31): Undeclared identifier: 'TWSAData'[Error] Unit1.pas(32): Undeclared identifier: 'PHostEnt'[Error] Unit1.pas(35): Undeclared identifier: 'result'。。 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,winsock, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer: array[0..63] of char; I: Integer; GInitData: TWSADATA; Result:string; AName: pchar; asize:cardinal; begin asize:=MAX_COMPUTERNAME_LENGTH + 1; getmem(AName,asize); try getcomputername(AName,asize); finally freemem(AName); end; AName :='jujumao'; WSAStartup($101, GInitData); StrPCopy(Buffer, AName); phe := GetHostByName(buffer); if phe = nil then Exit; pptr := PaPInAddr(Phe^.h_addr_list); I := 0; while pptr^[I] <> nil do begin Result := StrPas(inet_ntoa(pptr^[I]^)); Inc(I); edit1.Text :=Result; end; WSACleanup; end;end. useswinsock//引用该单元~function G_GetLocalHostIp(): string;var wVersionRequested: WORD; wsaData: TWSAData; p: PHostEnt; s: array[0..128] of char;beginresult := ' ';try wVersionRequested := MAKEWORD(1, 1); WSAStartup(wVersionRequested, wsaData); GetHostName(@s, 128); p := GetHostByName(@s); result := inet_ntoa(PInAddr(p^.h_addr_list^)^); WSACleanup(); except end;end; select SYS_CONTEXT('USERENV','IP_ADDRESS') from dual; delphi 中数据库修改 跟新问题 indy10 Tidtcp问题 窗体创建和释放问题,动态ADOQuery字段问题 菜鸟问题。高手进 WORD文件写入MS SQL数据库,用loadfromfile全是乱码,怎么办? 多线程问题,请高手指点!在线等 fieldbyname????不能读>? 极简单问题,文件拷贝的,散100分,不够再开贴 和我深爱的女孩分手了!!up有分,决不食言!!!! 如何用SQL的UPDATE语句修改两个表中有关联的某个字段信息? cxGrid 删除所有行的问题? ◆◆DELPHI常用技巧集--完整代码发布
var
wVersionRequested: WORD;
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of char;
begin
result := '';
try
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
result := p^.h_Name;
WSACleanup;
except
end;
end;function G_GetLocalHostIp(): string;
var
wVersionRequested: WORD;
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of char;
begin
result := '';
try
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
result := inet_ntoa(PInAddr(p^.h_addr_list^)^);
WSACleanup();
except
end;
end;客户端登录时,账号密码验证通过后,把自己的IP提交给服务端做处理就可以了。
按照你上面的运行,他在wsaData: TWSAData; 这里就报
[Error] Unit1.pas(31): Undeclared identifier: 'TWSAData'
[Error] Unit1.pas(32): Undeclared identifier: 'PHostEnt'
[Error] Unit1.pas(35): Undeclared identifier: 'result'
。。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,winsock, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of char;
I: Integer;
GInitData: TWSADATA;
Result:string;
AName: pchar;
asize:cardinal; begin asize:=MAX_COMPUTERNAME_LENGTH + 1;
getmem(AName,asize);
try
getcomputername(AName,asize);
finally
freemem(AName);
end; AName :='jujumao';
WSAStartup($101, GInitData); StrPCopy(Buffer, AName); phe := GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
Result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
edit1.Text :=Result; end;
WSACleanup;
end;end.
uses
winsock//引用该单元~function G_GetLocalHostIp(): string;
var
wVersionRequested: WORD;
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of char;
begin
result := ' ';
try
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
GetHostName(@s, 128);
p := GetHostByName(@s);
result := inet_ntoa(PInAddr(p^.h_addr_list^)^);
WSACleanup();
except
end;
end;