Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
UPnP Nedir? Delphi İle Nasıl Kullanılır?
#1
Herkese merhabalar,


Bugün sizlere yakında elveda diyeceğim bir tekniği tanıtacağım. Bu teknik sizin Client-Server mantığında oluşturmuş olduğunuz projeler için bir port açıcı görevi görüyor diyebiliriz. 

Exclamation Peki bu tekniğe neden elveda diyorum? 

Tekniğe elveda dememin sebebi şudur ki; tüm modemlerde desteği bulunmaması bu açıdan bazı bilgisayarlarda problem çıkartıyor olabilmesidir.

Exclamation  Peki bu teknik nedir?

UPnP olarak bilinen, açılışı "Universal Plug & Play" olarak adlandırılan bir iletişim aracı diyebiliriz. 

Idea  Google amcanın tanımı ile;

Alıntı:UPnP, Universal Plug&Play'in kısaltması. Evrensel Tak&Çalıştır adı verilen teknoloji sayesinde birçok elektronik cihaz kolayca birbiriyle uyumlu çalışabilir hale gelmektedir. Elektronik cihazlar bağlantı özelliği kazansa bile standart haberleşme protokolleri kullanmadığı sürece birbiriyle uyumlu çalışamazlar.


Tanımının yeterli olduğunu düşünüyorum bu sebeple sizlere Delphi ile nasıl kullanacağımız hakkında biraz bilgi vereyim.


1) UPnP.pas dosyasını tanıyalım

 Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol bir sınıf yapılı dosyadır. Bu sınıfı Delphi ile kullanarak en azından benim modem için uyumlu olduğundan dolayı birkaç deneme yapabiliriz.


Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Exclamation UPnP.pas dosya içeriği;

unit UPnP;    ///Türkçe Çeviri: Halil Han Badem

interface

uses
Windows, ActiveX, OleAuto, Variants, SysUtils;

type
PortAcmak = class
public
   class function Ekle(const Aktiflik: Boolean; const CikisPort, GirisPort: DWORD;
     const IPAdresi, Protokol, Aciklama: String): Boolean;
   class function Kaldir(const CikisPort: DWORD; const Protokol: String): Boolean;
end;

implementation

class function PortAcmak.Ekle(const Aktiflik: Boolean; const CikisPort, GirisPort: DWORD;
const IPAdresi, Protokol, Aciklama: String): Boolean;
var
n, p: Variant;
Begin
Result := False;
try
   n := CreateOleObject('HNetCfg.NATUPnP');
   p := n.StaticPortMappingCollection;
   if not VarIsClear(p) then
   begin
     p.Add(CikisPort, UpperCase(Protokol), GirisPort, IPAdresi, Aktiflik, Aciklama);
     Result := True;
   end;
except
// on e: exception do showmessage(e.Message);
end;
end;

class function PortAcmak.Kaldir(const CikisPort: DWORD; const Protokol: String): Boolean;
var
n, p: Variant;
Begin
Result := False;
try
   n := CreateOleObject('HNetCfg.NATUPnP');
   p := n.StaticPortMappingCollection;
   if not VarIsClear(p) then
     Result := p.Remove(CikisPort, UpperCase(Protokol)) = S_OK;
except
// on e: exception do showmessage(e.Message);
end;
end;

end.



İster indirebilir isterseniz de direkt burdan kodları alabilirsiniz. Geçmişte can sıkıntısından class isimlerini ve değişken isimlerini Türkçeye çevirmiştim Smile

NOT: Aşağıdaki aşamaları yapmadan önce UPnP.pas dosyasını projenize eklemeyi unutmayınız  Exclamation


uses
...
UPnP;


Bundan sonra altta bulunan kodlar ile portu açabilirsin. Tabi bu port program açık kalana kadar, kapandığı an port disable olur.

procedure TUPnPFRM.Button1Click(Sender: TObject);
begin


 if not PortAcmak.Kaldir(4232, 'TCP') then     // aynı port varsa kaldırır, var olupta kaldıramazsa sorun belirtir.
 ShowMessage('Aynı porttan mevcut!');


 if not PortAcmak.Ekle(True, 4232, 4232, '192.168.1.37', 'TCP', 'DelphiCanDenemePortu')  then   // gerekli bilgilendirmeler yapılıyor.
 ShowMessage('Port açılırken hata oluştu!');


end;



 Deneme amaçlı bir Server Socket ile 4232 numaralı port üzerinde denememi yaptım;


ByybQL.png




Kaynak kodlarını github adresimde bulabilirsiniz.

Github UPnP Projesi: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


Umarım bu yazım yardımcı olmuştur, herkese iyi forumlar.

Saygılarımla,
İyi çalışmalar.
May the force be with you!
Cevapla
#2
Klavyene saglik kardesim Big Grin. Ilerde isime yarar bunu biyere koyayim
WWW
Cevapla
#3
Emeğinize sağlık
There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi'de Dökümantasyon Nasıl Yapılır uparlayan 20 330 Dün, Saat: 11:29
Son Yorum: adelphiforumz
  Kitap İnceleme ( Algoritma ve Delphi 2005 ) #1 boreas 0 85 02-06-2018, Saat: 15:39
Son Yorum: boreas
  Delphi'de Indy SMTP ile e-mail gönderme. (GMail, Yandex, Yahoo vb.) csunguray 6 603 09-04-2018, Saat: 02:34
Son Yorum: dkadir
  Delphi Direktif Kullanımı narkotik 3 300 12-03-2018, Saat: 00:44
Son Yorum: mcuyan
  Delphi'de AES şifreleme (AES128, AES192, AES256) csunguray 1 315 20-02-2018, Saat: 13:50
Son Yorum: klavye



Konuyu Okuyanlar: 1 Ziyaretçi