30. november 1999 - 11:24
Der er
2 kommentarer og
1 løsning
Finde det lokale IP nummer
Hvorfor virker følgende kode ikke:
LocalIP := ServerSocket1.Socket.LocalAddress;
Status1.Panels[1].text := LocalIP;
Status1.Panels[1].Width := Canvas.TextWidth(LocalIP) + 15;
Jeg får resultatet : 0.0.0.0
Men når jeg bruger følgende kode:
if ServerSocket1.Socket.ActiveConnections > 0 then begin
LocalIP := ServerSocket1.Socket.Connections[0].LocalAddress;
Status1.Panels[1].text := LocalIP;
Status1.Panels[1].Width := Canvas.TextWidth(LocalIP) + 15;
end;
får jeg det rigtige IP nummer (10.0.0.251), men det kræver at mit klientprogram har oprettet en forbindelse.
Jeg er intereseret i at mit server program kan finde det lokale IP nummer uden at der er oprettet en forbindelse.
30. november 1999 - 12:04
#2
Jeg kan ikke svare dig på hvorfor dit program ikke virker. Jeg har selv fået tilsendt nedenstående fra en ven i det store udland. Det virker hos mig:
program NetInfo;
uses
WinSock,
Windows,
SysUtils;
{$R *.RES}
var
wVersionRequested : WORD;
wsaData : TWSAData;
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
OutPut:array[0..100] of char;
begin
{Start up WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
{Get the computer name}
GetHostName(@s, 128);
p := GetHostByName(@s);
{Get the IpAddress}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
StrPCopy(OutPut,'Hostname: '+Format('%s', [p^.h_Name])+#10#13+
'IPaddress: '+Format('%s',[p2])
);
WSACleanup;
MessageBox(0,OutPut,'NetInfo',mb_ok or mb_iconinformation);
end.
NiP/Delphi