Hogyan juthat el az IP-címét a számítógép

(Betárcsázós) Pozhaluystab kódrészletet. Ez nagyon fontos! Komponentyb próbálkoztak, de ez vezetett ahhoz, hogy a programot lógott 3 percenként. - (

var
# 032; WSAData. TWSAData;
# 032; o. PHostEnt;
# 032; Név. array [0 .. $ FF] Char;

WSAStartup ($ 0101, WSAData);
# 032; # 032; GetHostName (név, $ FF);
# 032; # 032; p: = gethostbyname (neve);
# 032; # 032; ShowMessage ( "Az IP." Inet_ntoa (PInAddr (p.h_addr_list ^) ^));
# 032; # 032; WSACleanup;


funkció LocalIP: string;
típus
TaPInAddr = array [0..10] az PInAddr;
PaPInAddr = ^ TaPInAddr;
var
Phe: PHostEnt;
pptr: PaPInAddr;
Puffer: array [0..63] char;
I: integer;
GInitData: TWSADATA;
kezdődik
WSAStartup ($ 101, GInitData);
Eredmény: = "";
GetHostName (puffer, sizeof (Buffer));
Phe: = gethostbyname (puffer);
ha Phe = nil majd a Kilépés;
pptr: = PaPInAddr (Phe ^ .h_addr_list);
I: = 0;
míg pptr ^ [I] <> nulla do
# 032; # 032; # 032; kezdődik
# 032; # 032; # 032; Eredmény: = StrPas (inet_ntoa (pptr ^ [I] ^));
# 032; # 032; # 032; Inc (I);
# 032; # 032; # 032; végén;
WSACleanup;
végén;

Köszönöm, természetesen.
De sem az egyik, sem a másik nem működik -, amely akár írni?
Az első példa, nem értem - ez egy funkció, vagy mi? Miért Var ott kezdődik „és vége” om - nem?

És Gyik miért is valami hasonló írást.
Azt hittem, ez egy egyszerű kérdés.

Nos ladnob tud válaszolni egy profi.
Spasibochki minden előre!

Igen. Nem vártam. És így fog tenni?
Kód hajtott bármilyen eljárás vagy függvény:


var
WSAData. TWSAData;
o. PHostEnt;
Név. array [0 .. $ FF] Char;
kezdődik
WSAStartup ($ 0101, WSAData);
# 032; GetHostName (név, $ FF);
# 032; p: = gethostbyname (neve);
# 032; ShowMessage ( "Az IP." Inet_ntoa (PInAddr (p.h_addr_list ^) ^));
# 032; WSACleanup;
végén;

Nos, nyilván ugyanaz, mint a felhasználási szükséges hozzá Winsock :)))))) jól adsz. ))))) Az új év első részeg vagy valami.
volna kotorászott a fórumon, van egy csomó hasonló kérdéseket.
Mindkét példa a munkám is, és én nem kapsz egy kész modult kódot.

Próbáltam egy másik példa, hogy működik, de a program egyébként lóg. Amennyire én értem ezt leginkább akkor az én ISP, de hogyan lehet megkerülni ezt. Végtére is, azt hittem, a program nem kell, hogy küldjön egy kérést a szolgáltató, mint például: „Mondd, kérlek, hogy milyen IP nekem?” Ez kell a számítógépen, azt tárolják.

Vagy talán valahol Application.ProcessMessages vpindyurit?

És figyelembe véve a felhasználás, sajnálom, én nem tudom. Azt internetes alkalmazások először a kapcsolatot, és ez a fajta denseness.

Egy friss példa próbára ma.

New példa:
Behelyezzük az eljárást. Kapok:
[Error] manageru.pas (176): Túl sok aktuális paraméterekkel


Ubirayu ShowMessage. tovább.
form1.currentip: = ipinet_ntoa (PInAddr (p.h_addr_list ^) ^);

Kapok:
[Error] manageru.pas (165): A bejelentés nélküli azonosító: "ipinet_ntoa"

Megnyerő használja a lelátókon.
Mit csinálok rosszul?
(Delphi5)

Volt ez a gondolat:

ez szükséges ahhoz, hogy egy második exe, amely foglalkozik csak a követési IP. És amikor az IP küld a programot néhány üzenetet, amely az új IP. majd tegye
Ez nem a fő program, és csak az IP-Otslezhivatel, és a felhasználó nem veszi észre ezt a semmilyen módon.

De ez csak, hogyan hajtsák végre ezt az üzenetet.
Ha valaki tudja, segítsen. Könyörgöm!

Legutóbb, az emberek is nézi az IP. A keresés során megtalálva amire szüksége van.


felhasználások
Windows SysUtils;
const
RAS_MaxIpAddress = 15;
RAS_MaxDeviceType = 16;
RAS_MaxEntryName = 256;
RAS_MaxDeviceName = 128;

típus
TRASPPPIP = rekord
dwSize. DWORD;
dwError. DWORD;
szIpAddress. array [0..RAS_MaxIpAddress] char;
végén;

THRASCONN = THandle;
TRASCONN = csomagolt rekord
dwSize. DWORD;
hRasConn. THRASCONN;
szEntryName. array [0..RAS_MaxEntryName] char;

szDeviceType. array [0..RAS_MaxDeviceType] char;
szDeviceName. array [0..RAS_MaxDeviceName] char;

szPadding. array [0..0] Char;
végén;

funkció RasGetIPAddress: string;
var
RASConns. TRasConn;
dwSize. DWORD;
dwCount. DWORD;
RASpppIP. TRASPPPIP;
kezdődik
Eredmény: = "";
RASConns.dwSize: = sizeof (TRASConn);
RASpppIP.dwSize: = sizeof (RASpppIP);
dwSize: = sizeof (RASConns);
ha RASEnumConnectionsA (@RASConns, @dwSize, @dwCount) = 0, akkor kezdődik
ha dwCount> 0, akkor kezdődik
dwSize: = sizeof (RASpppIP);
RASpppIP.dwSize: = sizeof (RASpppIP);
ha RASGetProjectionInfoA (RASConns.hRasConn,
RASP_PppIp,
@RasPPPIP,
@dwSize) = 0, akkor
Eredmény: = StrPas (RASpppIP.szIPAddress);
végén;
végén;
végén;

a Red_Alert:
Köszönjük! Este ma megpróbálom - írok az eredményeket.
És mégis, tud valaki ismeri a exe-Schnick?

Még egyszer köszönöm mindenkinek!

Ez nekem valaki magyarázni, hogy miért szinte az összes példák nem működnek küldeni nekem? Lehet olyan Delphi nem valamiféle (érdemes Delphi5)?

Akkor működnek?
Vagy valami, amit nem értek?

Mit nem csinál valamit?
Pliz HELP!

a Red_Alert:
[Error] Unit2.pas (43): A bejelentés nélküli azonosító: "RASEnumConnectionsA"

Nos, nem tudom, mit mondjak valamit tebe.Pervy példában biztosan működik, és davolno ezelőtt. És ő vstavden egy programot, amely mellett sok Che és nem tesz hang kapott adósságok. Most, mit tanácsol.

Z (07.01.02 22:57)
Ennek alapján a diagnózis, az, hogy nem csinálunk valamit, akkor nem megadott modul, amely meghatározza „RASEnumConnectionsA”, és talán nem is léteznek.