x11vnc
Originalförfattare | Karl Runge |
---|---|
Utvecklare | libvnc team |
Initial release | 2001 |
Stabil frisättning | 0.9.16 / 5 januari 2019
|
Förvar | |
Plattform | Unix, Linux |
Tillgänglig i | engelsk |
Typ | Fjärradministration |
Licens | GPL-2.0 eller senare |
Hemsida |
|
x11vnc är ett Virtual Network Computing (VNC) serverprogram. Den tillåter fjärråtkomst från en fjärrklient till en dator som är värd för en X Window- session och x11vnc-mjukvaran, och kontrollerar kontinuerligt X-serverns rambuffert för ändringar. Detta tillåter användaren att styra sitt X11- skrivbord ( KDE , GNOME , Xfce , etc.) från en fjärrdator antingen på användarens eget nätverk eller från Internet som om användaren satt framför den. x11vnc kan också polla icke-X11 rambuffertenheter, som webbkameror eller TV-tunerkort , iPAQ , Neuros OSD , Linux-konsolen och Mac OS X- grafikskärmen. x11vnc är en del av LibVNCServer -projektet och är fri programvara tillgänglig under GNU General Public License . x11vnc skrevs av Karl Runge.
x11vnc skapar inte en extra skärm (eller X-skrivbord) för fjärrkontroll. Istället använder den den befintliga X11 -skärmen som visas på monitorn på en Unix-liknande dator i realtid, till skillnad från andra Linux- alternativ som TightVNC Server. Det är dock möjligt att använda Xvnc eller Xvfb för att skapa en "virtuell" extra skärm, och ha x11vnc ansluten till den, vilket möjliggör X-11-åtkomst till huvudlösa servrar .
x11vnc har säkerhetsfunktioner som gör att användaren kan ställa in ett åtkomstlösenord eller använda Unix- användarnamn och lösenord. Den har också alternativ för anslutning via en säker SSL- länk. En SSL Java VNC viewer- applet tillhandahålls som möjliggör säkra anslutningar från en webbläsare . Säkerhetstypen VeNCrypt SSL/TLS VNC stöds också.
Många av UltraVNC -tilläggen till VNC stöds av x11vnc, inklusive filöverföring.
Omröstningsalgoritm
x11vnc behåller en kopia av X-serverns rambuffert i RAM . X11 - programmeringsgränssnittet XShmGetImage
används för att hämta rambuffertpixeldata . x11vnc jämför X-serverns rambuffert med dess kopia för att se vilka pixelregioner som har ändrats (och därför måste skickas till VNC-visningarna.) Att läsa pixeldata från den fysiska rambufferten kan vara mycket långsammare än att skriva till den (eftersom grafikenheter är inte optimerade för läsning) och därför skulle en sekventiell pixel för pixel-kontroll ofta vara för långsam.
För att förbättra situationen läser x11vnc i hela rader med pixlar åtskilda med 32 pixlar vertikalt. När den väl kommer till botten av skärmen börjar den igen nära toppen med en något annorlunda offset. Efter 32 pass som denna har den täckt hela skärmen. Den här metoden gör det möjligt för x11vnc att upptäcka förändringar på skärmen ungefär 32 gånger snabbare än en sekventiell kontroll skulle göra (såvida inte ändringarna är mycket små, säg bara 1 pixel hög.) Om X11 DAMAGE-tillägget finns, använder x11vnc det för att ge tips där att fokusera sin polling, och därigenom hitta förändringar ännu snabbare och även minska systembelastningen.
Ingångsinjektion
När x11vnc tar emot användarinmatningshändelser (tangenttryckningar, pekrörelser och klick på pekarens knappar) från en VNC-visare måste den injicera dem syntetiskt i X-servern. X11 - programmeringsgränssnitten XTestFakeKeyEvent
, XTestFakeMotionEvent
och XTestFakeButtonEvent
i XTEST-tillägget används för att uppnå detta.
För icke-X11-hanterade enheter (som Mac OS X- grafikskärm) måste olika programmeringsgränssnitt användas. x11vnc tillhandahåller också ett gränssnitt där användaren kan tillhandahålla sitt eget inmatningsprogram.
Intressanta användningsområden
Ofta byggs system för speciella ändamål med X Window System för att hantera den grafiska displayen. x11vnc kan användas för att exportera systemets display för fjärråtkomst till VNC. Detta möjliggör fjärrövervakning, kontroll och felsökning av specialsystemet. Ibland sparar detta att en tekniker skickas till en avlägsen plats eller låter användare styra utrustning från sin arbetsstation eller bärbara dator. x11vnc är känt för att ha körts på följande typer av system: Elektronmikroskop , MRI och radiologi bildanalyssystem, kraftverk och oljeplattformshanteringskonsoler , kontroll av materialdistribution, testning av fartygs självförsvarssystem, NMR - system, kiselwaferanalysmikroskop , och Teater- och konsertbelysningskontroll. x11vnc används för att exportera X11-skärmarna i inbyggda system som Linux-baserade handdatorer och hemmabio-datorer .
Om x11vnc inte kan köras på specialsystemet, kan det ibland köras på en närliggande dator och polla X-serverns rambuffert över nätverket. Detta är hur proprietära X-terminalenheter kan nås via x11vnc.
Xvnc-emulering
Även om x11vncs primära användning är för X-servrar som är associerade med fysisk grafikhårdvara, kan den också kopplas till virtuella X-servrar (vars rambuffert endast finns i RAM-minne) som Xvfb eller en Sun Ray- session. x11vnc har alternativ ( -create
och -svc
) för att starta Xvfb automatiskt, möjligen som Unix-användaren som loggade in. Det interaktiva svaret för x11vnc och Xvfb kanske inte är lika snabbt som Xvnc , men detta läge möjliggör funktioner som Xvnc inte har, som SSL-kryptering och Unix-användarnamn och lösenord.
Cachning på klientsidan
RFB (VNC)-protokollet är udda jämfört med andra nätverksgrafikprotokoll, såsom X11 och RDP , eftersom det inte finns någon bestämmelse för cachelagring på tittarsidan av pixeldata. Även om detta gör klienten lättare att implementera, finns det ett pris att betala i form av interaktiv respons. Till exempel måste varje återexponering av ett fönster eller bakgrundsområde få dess (komprimerade) pixeldata att skickas om över nätverket. Denna effekt är särskilt märkbar för fönster med komplexa eller fotoregioner (som ett webbläsarfönster) som ofta ikonifieras och avkonifieras eller återexponeras.
x11vnc har en experimentell och något brute-force implementering av klientsidans cachning. Det är aktiverat via alternativet -ncache .
När du skapar RFB-rambufferten i det här läget allokerar x11vnc ett mycket stort skrapområde under den övre delen som används för faktiska (på skärmen) pixeldata. x11vnc kan sedan använda kommandot RFB CopyRect för att instruera tittaren att flytta rektanglar med pixeldata in i och ut ur scratch-området. Dessa drag görs lokalt på tittarsidan. På detta sätt kan x11vnc hantera scratch-regionen för att lagra och hämta pixeldata utan att behöva skicka om den över nätverket.
x11vncs cachningsläge på klientsidan kan ge märkbara interaktiva svarsförbättringar för många aktiviteter.
Eftersom det använder det befintliga RFB CopyRect-kommandot, kommer schemat att fungera med alla (dvs omodifierade) VNC-visare. Det finns dock några nackdelar. Den första är att den förbrukar en stor mängd minne. För bra prestanda bör ett repområde som är 10 till 20 gånger större än den faktiska skärmen användas. Så istället för att använda 5 MB för en 1280x1024 truecolor rambuffert, kommer närmare 100 MB att användas (på både VNC-klienten och serversidan.) Detta är inte så mycket av ett problem på moderna datorer, men skulle inte vara möjligt på en låg nivå. minnesenhet. För det andra kan VNC-visningen behandla scratch-området på ett sätt som förvirrar användaren, till exempel visa det för användaren eller automatiskt panorera ner i det om musen når botten av den riktiga skärmen. Unix VNC-visningsprogrammet i SSVNC döljer automatiskt repområdet. Slutligen är x11vncs heuristik för cachning och återanvändning av fönsterpixeldata inte perfekta och kan leda till oväntad blinkning av ett fönsters innehåll och andra oönskade effekter.
Se även
externa länkar
- x11vnc på GitHub
- x11vnc: en VNC-server för riktiga X-skärmar (gammal projekthemsida)