Arsip: Cek status modem dari delphi

more 13 years ago
sukuguci
Para Delpier yth, ane mo coba buat koneksi jaringan over tcp/ip, variabel yang ane perlukan adalah :
1. Cek status modem
2. baca TCP/IP komputer existing,
3. Cek nomor fisik ethernet card,
gimana caranya ya, agar variabel yang ane perlukan tersebut dapat diketahui/dibaca oleh komputer client?.
sekian dulu, thank delpier

more 13 years ago
cikumiyu
Alow, lama ngga ketemu. Apa kabar setelah acara Borland Techology Day di menara BNI?
Balik ke pertenyaan, maksudnya client mau tahu 3 parameter punya server, begitu kah?

more 13 years ago
sukuguci
Alhamdulillah, baik-baik saja pakar delphi, ane baru turun gunung bertapa mencari wangsit , kali aja bisa ganti in posisi mbah marijan , e...kagak taunya balik lagi ke forum ini jadi programmer(takdir kali ya :) )
Variabel 2 dan 3 yang diperlukan tersebut berasal dari client, untuk dijadikan data oleh server nantinya. sementara cek status modem hanyalah untuk memferifikasi apakah bisa client terhubung ke internet atau tidak.
pertanyaan selanjutnya(mumpung ketemu ama pakar nih) , bgmana juga caranya agar server bisa membuat virtual ip untuk komputer client.
tq,

more 13 years ago
cikumiyu
Waduh, ane bukan bakar pakar delphi. Belum setinggi itulah ilmu ane. :) Masih biasa aja.
Oh ya, ngulak-ngulik ternyata dapet nih beberapa jawaban untuk pertanyaanmu. Yang belum kejawab insya allah menyusul yah kalo dah dapet jawabnnya :D
1. Cara membaca TCP/IP komputer existing. Ini maksunya IPAddress kah? Anggap aja yang kamu maksud IPAddress yah. Kalo begitu yah ngga usah repot². Tinggal pake class TIdIPWatch. Ini adalah salah satu class keluarga Indy. Built-In sejak Delphi 6. Fungsi dibawah ini mungkin bisa digunakan.
uses IdIPWatch;
function GetLocalIP: string;
var
idIPWatch: TIdIPWatch;
begin
idIPWatch := TIdIPWatch.Create(nil);
Result := idIPWatch.LocalIP;
idIPWatch.Free;
end;
2. Mengambil nomor fisik ethernet card atau MacAddress. Ini aku coba buatkan fungsi buat ngambilnya. Cuman belum di-test. Mudah² bisa dipakai. Ini memanfaatkan unit NB30 bawaan delphi yang berisi beberapa record serta fungsi untuk mengambil informasi network device melalui NetBios. Kembalian fungsi GetMacAddress adalah string dari Mac address dari ethernet card bernomor (ber-index) AEthNumber. Untuk komputer yang hanya memiliki sebuah ethernet card biasanya parameter ini bisa diisi dengan 0 (nol).Fungsinya seperti ini:
uses NB30;
function GetMacAddress(AEthNumber: Byte): string;
var
ncb: PNCB;
errorCode: Char;
adapter: PAdapterStatus;
begin
New(ncb);
{ Inisiasi isi memory pada pointer ncb dengan char 0 };
FillChar(ncb^, SizeOf(TNCB), 0);
ncb^.ncb_command := Char(NCBRESET);
ncb^.ncb_lana_num := Char(AEthNumber);
errorCode := NetBios(ncb);
{ Reset kembali isi memory pointer nbc dengan char 0 };
FillChar(ncb^, SizeOf(TNCB), 0);
ncb^.ncb_command := Char(NCBASTAT);
ncb^.ncb_lana_num := Char(AEthNumber);
{ Harus berisi 16 karakter }
StrPCopy(ncb^.ncb_callname, '* ');
New(adapter);
FillChar(adapter^, SizeOf(TAdapterStatus), 0);
ncb^.ncb_buffer := Pointer(adapter);
ncb^.ncb_length := SizeOf(TAdapterStatus);
errorCode := NetBios(ncb);
if (errorCode = Char(NRC_GOODRET)) or (errorCode = Char(NRC_INCOMP)) then
Result := IntToHex(Ord(adapter^.adapter_address[0]), 2) + '-' +
IntToHex(Ord(adapter^.adapter_address[1]), 2) + '-' +
IntToHex(Ord(adapter^.adapter_address[2]), 2) + '-' +
IntToHex(Ord(adapter^.adapter_address[3]), 2) + '-' +
IntToHex(Ord(adapter^.adapter_address[4]), 2) + '-' +
IntToHex(Ord(adapter^.adapter_address[5]), 2)
else
Result := '00-00-00-00-00-00';
Dispose(ncb);
Dispose(adapter);
end;
Untuk pertanyaan cara mendapatkan status modem kurang jelas negh pertanyaanya. Yang minta clietn pa server? Terus itu modem internal pa external. Kalo external lewat serial, paralel port, atau usb?
Terus untuk pertanyaan yang satu lagi, yang "bagimana cara membuat virtual ip". Yang kamu maksud virtual ip itu apa? Local IP addres kah?
more 13 years ago
sukuguci
Makasih banyak boz atas bantuannya, jawaban untuk 2 point diatas sangat benar. ( ip dan macaddress memang). selanjutnya :
Yang minta status modem adalah client, client akan menguji apakah ada modem yang terpasang baik internal atau external dan melalui apakah modem tersebut terkoneksi dengan client( RJ 45, Paralel port atau usb). Pada prinsipnya program dapat memeriksa apakah modem ready untuk koneksi ke internet, jika tidak program akan mengeluarkan pesan kesalahan.
atau apakah ada cara/pendekatan lain yang lebih sederhana daripada menguji pheriperal (modem) untuk memeriksa bahwa computer client sudah terhubung ke internet atau belum?.
Brillian sekali, ane mo buat ip addres duplikat dari komputer client itu sendiri ( bukan dari server-maaf). umpama kita sudah terbaca ip client 192.168.1.1, nah ane mo kasih satu lagi ip buat client tersebut dengan nomor yang berbeda umpama : 240.240.1.1 sehingga NIC seolah -olah memiliki dua card yang berbeda.inilah yang ane maksudkan "virtual ip" (ngak tau nih apa istilahnya benar) padahal sesungguhnya cuma ada satu card pada pc client tersebut.
tq boz.

more 13 years ago
cikumiyu
syukur deh kalau 2 jawaban sebelumnya bisa membantu. Nah sekarang yang masalah "memeriksa status modem" yha. Nih sudah dibuatkan fungsi untuk memeriksa status modem. Fungsinya bernama IsModemOnline(ACommNumber: Byte): Boolean. Kita API-nya windows saja, yaitu CreateFile. IsModemOnline akan mengembalikan nilai true jika modem pada serial port ACommNum online, dan false jika sebaliknya. Misalnya kalau modem terhubung melalui port COM1, maka nilai ACommNumber adalah 1, dan seterus jika COM2 maka nilainya 2. Source code-nya seperti ini:
uses Windows;
function IsModemOnline(ACommNumber: Byte);
var
hFile: THandle;
buffer: PChar;
modemPath: string;
begin
modemPath := Format('COM%d', [ACommNumber]);
GetMem(buffer, Length(modemPath)+1);
StrPCopy(buffer, modemPath);
hFile := CreateFile(buffer, GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
Result := hFile <> INVALID_HANDLE_VALUE;
CloseHandle(hFile);
FreeMem(buffer);
end;
Fungsi ini dioperasikan pad server. Jika client perlu mengetahui status modem yang ada pada server, client harus melakukan request ke server. Teknik yang digunakan adalah komunikasi client-server. Implementasinya bisa menggunakan winsock. Nah .. untuk kounikasi ini bisa gunakan class TClientSocket di sisi client, sedang kan untuk server bisa pakai TServerSocket. Kalau kamu pernah menggunakan socket untuk kumunikasi antara client dan server, seharusnya sangat mudah mengimplementasikannya. ;)
Semoga bisa membantu dan mudah dimengerti.
more 13 years ago
cikumiyu
@sukuguci: om, tq banget yah, smoga jawaban untuk p'tanyaan lain menyusulWaduh iya 1 lagi yah .. cara bikin virtual IP atau IP aliasing. Untuk ip aliasing aku rasa langsung execute dari command prompt aja kali yah. Tinggal jalanin netsh.exe lewat ShellExecute nya Windows API. Sintaksnya kaya gini: netsh interface ip set address name="interface_name" static ip_address subnet gateway metric Misalnya kalau kita mau tambah ip 192.168.0.100, subnet 255.255.255.0, gateway 192.168.0.1 ke ethernet card ke-1 dengan nama "Local Area Connection" lewat command prompt, command line-nya akan jadi seperti ini: C:\>netsh interface ip set address name="Local Area Connection" static 192.168.0.100 255.255.255.0 192.168.0.1 1 Nah selanjutnya itu command line dieksekusi aja pake ShellExecute seperti ini negh:
uses ShellAPI, Windows;
const
COMAND_LINE = 'netsh interface ip set address name="Local Area Connection" static 192.168.0.100 255.255.255.0 192.168.0.1 1';
...
begin
ShellExecute(0, nil, COMMAND_LINE, nil, nil, SW_SHOWNORMAL);
end;
Kayanya seperti itu deh. Semoga bisa terpuaskan. :D.... Ngomong² lagi ada project apa sekarang? Masih ada lowongan ngga buat Delphi programmer? ;) :p
more 13 years ago
cikumiyu
@sukuguci: om, tq banget yah, smoga jawaban untuk p'tanyaan lain menyusulWaduh iya 1 lagi yah .. cara bikin virtual IP atau IP aliasing. Untuk ip aliasing aku rasa langsung execute dari command prompt aja kali yah. Tinggal jalanin netsh.exe lewat ShellExecute nya Windows API. Sintaksnya kaya gini: netsh interface ip set address name="interface_name" static ip_address subnet gateway metric Misalnya kalau kita mau tambah ip 192.168.0.100, subnet 255.255.255.0, gateway 192.168.0.1 ke ethernet card ke-1 dengan nama "Local Area Connection" lewat command prompt, command line-nya akan jadi seperti ini: C:\>netsh interface ip set address name="Local Area Connection" static 192.168.0.100 255.255.255.0 192.168.0.1 1 Nah selanjutnya itu command line dieksekusi aja pake ShellExecute seperti ini negh:
uses ShellAPI, Windows;
const
COMAND_LINE = 'netsh interface ip set address name="Local Area Connection" static 192.168.0.100 255.255.255.0 192.168.0.1 1';
...
begin
ShellExecute(0, nil, COMMAND_LINE, nil, nil, SW_SHOWNORMAL);
end;
Kayanya seperti itu deh. Semoga bisa berjalan dengan benar. Belum ditest. :D.... Ngomong² lagi ada project apa sekarang? Masih ada lowongan ngga buat Delphi programmer? ;) :p
more 13 years ago
sukuguci
ha...ha..ha..., sory buanget kalo ane nagih yang tertinggal nih. Walau ngak di test, ane kagak kuatir. Kalo ngak bisa kan gampang, kembali in aja lagi ke pakarnya :).
urusan proyek, itulah masalahnya, maka ane kembali ke khittoh (forum delphi ini), malah ane berharap kita (delpier) dapat berkumpul lagi untuk untuk membuat mesin uang :). ane sih ngak muluk-muluk, kalo sudah ada hasil, ane sangat siap sekali terima dan menghabiskan uangnya :):):) gimana, ada ide?. (ooo ....ya, ane minta email pribadi donk) thank ya.
more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
Last Articles
- Project Group dalam Lazarus
- FastPlaz Database Explorer
- Release: FastPlaz Super Mom v0.12.22
- PascalClass #3: Web Development with Free Pascal
- Makna Pascal di Pascal Indonesia
- Kulgram : Instalasi Lazarus di Perangkat Berbasis ARM
- PascalClass #1: Analisa Database dan Machine Learning
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
- Mengenal OXYGENE – Pascal For .NET
- PascalTalk #5: UX: Research, Design and Engineer
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 months ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 1 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 8 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 8 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 8 years ago
Random Topic
- MS SQL server service
by iconfuseme in MsSQL more 14 years ago - Kembali ke form sebelumnya...
by Random in Form Enhancement & Graphical Controls more 13 years ago - result
by muktaf in Tip n Trik Pemrograman more 13 years ago - Error Timer untuk looping
by astonix in Tip n Trik Pemrograman more 13 years ago - Format Waktu
by galih in Tip n Trik Pemrograman more 13 years ago - manggil application yg sama dgn shellexecute
by jordan in Hal umum tentang Pascal Indonesia more 13 years ago - [ASK] tanya masalah searching
by duro in Network, Files, I/O & System more 11 years ago - Tanya Zeos 6.5.1 Alpha & MySql 5.0
by priki in MySQL more 13 years ago - VCL dan Library gratis!
by DelphiExpert in Tip n Trik Pemrograman more 13 years ago - Membuat Tulisan Di QRLabel/QRMemo Rata Kiri-Kanan ?
by umarbakri in Reporting more 13 years ago