Arsip: Cek status modem dari delphi

 
user image
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
user image
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?
user image
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,
user image
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?
user image
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.
user image
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.
user image
more 13 years ago

sukuguci

om, tq banget yah, smoga jawaban untuk p'tanyaan lain menyusul
user image
more 13 years ago

cikumiyu

@sukuguci: om, tq banget yah, smoga jawaban untuk p'tanyaan lain menyusul
Waduh 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
user image
more 13 years ago

cikumiyu

@sukuguci: om, tq banget yah, smoga jawaban untuk p'tanyaan lain menyusul
Waduh 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
user image
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
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com