UPnP

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 25 juni 2019; kontroller kräver 5 redigeringar .

Universal Plug and Play (UPnP) är en arkitektur för flerskiktsanslutningar mellan värdar . Ger automatisk anslutning av värdar till varandra och deras gemensamma arbete. Baserat på TCP/IP , HTTP , XML och andra öppna Internetstandarder.

UPnP Forum

Universal Plug and Play Forum (UPnP Forum) är en öppen branschorganisation som bildades i juni 1999 för att utveckla standarder för UPnP-teknik som skulle göra det lättare att ansluta smarta enheter över hemmet och, så småningom, företagsnätverk. Forummedlemmar skapar och publicerar UPnP-enhetskontrollprotokoll och tjänstekontrollprotokoll.

I början av juni 2001 omfattade UPnP Forum över 350 företag. Forumet leds av UPnP Steering Committee, som består av 22 medlemmar. Dessutom finns det en teknisk kommitté, en marknadsföringskommitté och olika arbetskommittéer som arbetar med specifika kategorier av enheter. Listor över forummedlemmar, samt information om hur man går med i det, finns på forumets webbplats.

Tekniska element

UPnP är inriktat på hemnätverk, småföretagsnätverk och andra små nätverk. Den tillhandahåller datautbyte mellan två valfria enheter som är under kontroll av en nätverkskontrollenhet. UPnP fungerar oavsett operativsystem, fysisk media eller programmeringsspråk som används.

UPnP stöder nollkonfigurationsnätverk och automatisk enhetsidentifiering: en enhet ansluter sig dynamiskt till ett nätverk, erhåller en IP-adress, meddelar dess kapacitet på begäran och samlar in information om närvaron och kapaciteten hos andra enheter. Närvaron av DHCP- och DNS- servrar är valfritt; de kan endast användas om de är tillgängliga online. Dessutom kan enheten automatiskt logga ut från nätverket, och detta kommer inte att leda till några avbrott i dess drift.

UPnP-tekniken bygger på all erfarenhet av utvecklingen av Internet, den använder aktivt många av dess komponenter, inklusive IP , TCP , UDP , HTTP och XML . UPnP-utvecklingsprojektet tillhandahåller multilateralt samarbete mellan intresserade företag inom området för att skapa standardenhetskontrollprotokoll (DCP). Precis som med Internet kommer dessa standarder att baseras på deklarativa trådbundna åtkomstprotokoll skrivna i XML och kommunicerar över HTTP.

Port forwarding

UPnP låter dig vidarebefordra portar programmatiskt. Detta används av applikationer som Skype, μTorrent. Nedan är ett exempel på hur man använder ett OLE- objekt för att implementera en sådan omdirigering (koden är skriven i Delphi 7, som stöds av Windows XP Service Pack 2 och högre).

använder ..., WinSock , ComObj , ActiveX .... //För de senaste versionerna av Delphi, lägg till "OleAuto" istället för "ComObj"-enheten. ... function GetLocalIP : String ; //Hämta lokal IP-adress const WSVer = $101 ; var wsaData : TWSAData ; P : PHostEnt ; Buf : array [ 0 .. 127 ] av Char ; börja Resultat := '' ; om WSAStartup ( WSVer , wsaData ) = 0 börja om GetHostName ( @ Buf , 128 ) = 0 och sedan börja P := GetHostByName ( @ Buf ) ; om P <> noll Resultat := iNet_ntoa ( PINAddr ( p ^. h_addr_list ^ ) ^ ) ; slut ; WSACleanup ; slut ; slut ; procedure AddUPnPEntry ( Port : Heltal ; const Namn : ShortString ; LAN_IP : sträng ) ; var Nat : Variant ; Portar : Variant ; börja om INTE ( LAN_IP = '127.0.0.1' ) och börja sedan prova Nat := CreateOleObject ( 'HNetCfg.NATUPnP' ) ; Hamnar := Nat . StaticPortMappingCollection ; om inte VarIsClear ( Ports ) börja //do something //ShowMessage(IntToStr(Ports.Count)); hamnar . Lägg till ( Port , 'TCP' , Port , LAN_IP , True , name ) ; slut ; förutom e : Undantag gör ShowMessage ( 'Ett fel uppstod när UPnP-portar lades till.' + e . Meddelande ) ; slut ; slut ; slut ; procedure RemoveUPnPEntry ( Port : Heltal ) ; var Nat : Variant ; Portar : Variant ; börja prova Nat := CreateOleObject ( 'HNetCfg.NATUPnP' ) ; Hamnar := Nat . StaticPortMappingCollection ; hamnar . Ta bort ( Port , 'TCP' ) ; förutom ShowMessage ( 'Ett fel uppstod när UPnP-portar togs bort.' + 'Kontrollera om din router stöder UPnP och ' + 'har den aktiverat eller inaktiverat UPnP.' ) ; slut ; slut ; procedur ListUPnPEntry ; var Nat : Variant ; Portar : Variant ; Enum : IEnumVARIANT ; MyPort : OLEVariant ; IntPort , ExtPort : Heltal ; Desc , Protocol , IntClient , ExtIP : WideString ; Aktiverad : Boolean ; iValue : LongWord ; börja prova Nat := CreateOleObject ( 'HNetCfg.NATUPnP' ) ; Hamnar := Nat . StaticPortMappingCollection ; om inte VarIsClear ( Ports ) börja Enum := IUnknown ( Ports . _NewEnum ) som IEnumVARIANT ; medan Enum . Nästa ( 1 , MyPort , iValue ) = S_OK börjar Desc : = MyPort . Beskrivning ; Aktiverad := MyPort . Aktiverad ; ExtIP := Min port . ExternalIPAddress ; ExtPort := MyPort . Extern port ; IntClient := MyPort . InternalClient ; IntPort := MyPort . InternalPort ; Protokoll := Min hamn . Protokoll ; Form1 . Memo1 . Linjer . Lägg till ( Desc + ^ I + ^ I + IntToStr ( ExtPort ) + ^ I + Protocol + ^ I + IntToStr ( IntPort ) + ^ I + IntClient ) ; slut ; slut ; förutom ShowMessage ( 'Ett fel uppstod när UPnP-portar listades. Kontrollera om din router stöder UPnP och har UPnP aktiverat.' ) ; slut ; slut ; procedur TForm1 . Button1Click ( Avsändare : TObject ) ; börja AddUPnPEntry ( 8090 , 'MyProgram' , GetLocalIP ) ; //Lägg till portslut ; procedur TForm1 . Button2Click ( Avsändare : TObject ) ; börja RemoveUPnPEntry ( 8090 ) ; //Ta bort portslut ; procedur TForm1 . Button3Click ( Avsändare : TObject ) ; börja ListUPnPEntry ; // Uppdateringsslut ;

I det här exemplet sattes tjänstens namn till "Mitt program". Tjänstens namn innehåller en beskrivning av portvidarebefordranprogrammet.

Se även

Externa länkar