P> di bawah Win9x, jika jaringan dial-up diinstal, akan ada dua pustaka program tata kelola jaringan dial-up rasapi32.dll dan rasapi16.dll di bawah sistem direktori sistem sistem Windows. dan atur informasi tentang panggilan untuk terhubung ke jaringan. Tentu saja, Anda bisa mendapatkan alamat IP dinamis dari koneksi dial-up. Dalam file bantuan Delphi, ada instruksi khusus untuk fungsi RAS terkait. 1. Pertama -tama jelaskan beberapa konstanta data dan struktur data yang akan digunakan. const
Ras_maxdevicetype = 16; // Jenis perangkat panjang nama
Ras_maxentryname = 256; // panjang maksimum nama koneksi
Ras_maxdeviceName = 128; // panjang maksimum nama perangkat
Ras_maxipaddress = 15; // Panjang maksimum alamat IP
Rasp_pppip = $ 8021; // Jenis protokol koneksi dial-up, nilai ini mewakili jenis koneksi PPP
Hrasconn = Dword; // Jenis pegangan koneksi dial-up
Rasconn = Record // Informasi pegangan dan pengaturan dari koneksi dial-up aktif
dwsize: dword; // ukuran memori yang ditempati oleh struktur ini (byte),
Umumnya diatur ke sizeof (Rasconn)
hrasconn: hrasconn; // pegangan koneksi aktif
szentryname: array [0..ras_maxentryname] dari char;
// Nama koneksi aktif
szdevicetype: array [0..ras_maxdevicetype] dari char;
// Jenis peralatan yang digunakan untuk koneksi aktif
szdevicename: array [0..ras_maxdevicename] dari char;
// Nama perangkat yang digunakan untuk koneksi aktif
akhir;
TRASPPPIP = Rekam // Informasi Alamat IP Dinamis untuk Koneksi Dial-Up Aktif
dwsize: dword; // ukuran memori yang ditempati oleh struktur ini (byte),
Umumnya diatur ke sizeof (traspppip)
Downor: Dword; // Identifier Tipe Kesalahan
szipaddress: array [0..ras_maxipaddress] dari char;
// Alamat IP dari koneksi dial-up aktif
akhir;
2. Selanjutnya, kita perlu menjelaskan dua fungsi RAS yang akan digunakan. // Dapatkan informasi tentang semua koneksi dial-up aktif (menangani koneksi dan pengaturan informasi)
fungsi rasenumConnections (var lprasconn: rasconn;
// Terima penunjuk buffer dari koneksi aktif
var lpcb: dword; // ukuran buffer
var lpcconnections: dword // jumlah aktual koneksi aktif
): DWORD;
fungsi rasenumConnections;
Nama RasenumConnectionSA;
// Dapatkan informasi IP dinamis untuk koneksi dial-up aktif yang ditentukan
fungsi rasgetProyIndInfo (
hrasconn: hrasconn; // Tentukan pegangan untuk koneksi aktif
Rasproyjection: Dword; // Jenis Koneksi RAS
var lpproection: traspppip; // buffer untuk menerima informasi IP dinamis
var lpcb: dword // menerima ukuran buffer
): Dword; stdcall;
ction rasgetProyEmpromo; eksternal
Nama rasapi32.dll rasgetProySInfoa;
Ketika nilai pengembalian dari kedua fungsi ini adalah 0, itu berarti eksekusi berhasil, dan non-0 berarti kode kesalahan. 3. Diskusi berikut adalah tentang cara menggunakan dua fungsi RAS di atas untuk mendapatkan alamat IP dinamis dari koneksi dial-up. Nama, pegangan koneksi, jenis perangkat dan nama perangkat; lalu gunakan fungsi rasgetProyEnjectionFo untuk mendapatkan struktur traspppip yang sesuai dengan koneksi, termasuk atribut anggota szipaddress, yang merupakan alamat IP dinamis. Untuk detailnya, silakan merujuk ke cuplikan program dan informasi komentar di bawah ini. Prosedur TFORM1.BUTTON1CLICK (Pengirim: Tobject);
const
MaxConnections = 10; // Misalkan ada hingga 10 koneksi dial-up aktif
var
Koneksi: Array [0..MaxConnections-1] dari Rasconn;
// Array koneksi dial-up
Longsize: DWORD;
IntavailableConnections: DWORD;
// Jumlah aktual koneksi dial-up aktif
IntIndex: Integer;
strtemp: string;
DWRESULT: DWORD;
DWSIZE: DWORD;
Raspppip: traspppip;
// Informasi alamat IP dinamis dari koneksi dial-up aktif
Mulai
koneksi [0] .dwsize: = sizeof (rasconn);
Longsize: = MaxConnections * Koneksi [0] .dwsize;
// Terima ukuran buffer dari koneksi aktif
IntavailableConnections: = 0;
// Dapatkan informasi tentang semua koneksi dial-up aktif (menangani koneksi dan pengaturan informasi)
DWRESULT: = rasenumConnections (koneksi [0],
longsize, intavailableConnections);
jika 0 $#@60;
memo1.lines.add (kesalahan: + inttoStr (dwrresult))
kalau tidak
Mulai
memo1.lines.add (koneksi aktif yang ada memiliki +
InttoStr (intavailableConnections) +);
// Tampilkan informasi tentang semua koneksi dial-up aktif (pengaturan informasi dan alamat IP dinamis)
untuk intindex: = 0 ke intavailableconnections - 1 do
Mulai
// Tampilkan informasi pengaturan untuk koneksi dial-up aktif
strtemp: = nama koneksi:
+ Strpas (koneksi [intindex] .szentryname)
+, Jenis Perangkat:
+ Strpas (koneksi [intindex] .szdevicetype)
+, nama perangkat:
+ Strpas (koneksi [intindex] .szdevicename);
memo1.lines.add (strtemp);
// Tampilkan alamat IP dinamis dari koneksi dial-up aktif
dwsize: = sizeof (raspppip);
Raspppip.dwsize: = dwsize;
DWRESULT: = rasgetProyMectionInfo
(Koneksi [IntIndex] .hrasconn,
Rasp_pppip, raspppip, dwsize); // dapatkan alamat IP dinamis
jika 0 $#@60;
memo1.lines.add (
Kesalahan: + InttoStr (DWRresult))
kalau tidak
memo1.lines.add (
Alamat dinamis: + strpas (raspppip.szipaddress));
akhir;
akhir;
akhir;
Program di atas didebug dan disahkan di bawah PWIN98+Delphi3.0.