myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Karte / Anleitung dazu
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
   » visual studio one
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity

» Anzeigen
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grafik und Sound » "Watch Another Screen"
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

"Watch Another Screen"

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Mentor49
myCSharp.de-Mitglied

Dabei seit: 18.03.2009
Beiträge: 35


Mentor49 ist offline

"Watch Another Screen"

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey, ich bin zurzeit mit dem Projekt "Watch another Screen" beschäftigt.
Dabei handelt es sich um eine Art "Remote Desktop", nur ohne Steuerung.
Also simpel gesagt:
> Server-Applikation auf einem Computer wartet auf Client
> Client verbindet sich zum Server
> Server sendet nun den aktuellen Desktop-Screen und alle darauffolgenden Veränderungen
> Client empängt diese Daten und stellt sich das Bild zusammen
So kann man halt vom Client-Computer aus sehen, was grade beim Server-Computer los ist.

Ich habe schon viel rumprobiert.

1. Versuch: Server macht ein Screen und verkleinert die Auflösung zu 800x600. Der Screen wird in 60 Teile/Spalten/Balken aufgeteilt (60*(10px(y)*800(x)). Jeder "Balken" wird in einer Schleife durchgegangen, sobald auch nur ein Pixel anders ist, als beim lezten Durchgang, wird der komplette Balken als Byte-Array an den Client gesendet.
Im Schema:

Zitat:
Index-Byte(0-59), Pixel1-Color-R, Pixel1-Color-G, Pixel1-Color-B, Pixel2-Color-R, Pixel2-Color-G, Pixel2-Color-B, ... , ...

Die X und Y Koordinaten kann der Client sich durch den Index-Byte selbst zusammenrechnen.
Bei diesem Versuch allerdings, wurde das ganze wirklich "balkenmäßig" beim Client angezeigt..also man hat tatsächlich gesehen dass Balken für Balken erneuert wurde..und das auch nicht wikrlich schnell.

2. Versuch: Server macht alle 300 Millisekunden (0,3s) ein verkleinerten Screen (800x600) und versendet ihn komplett zum Client. Das lief sogar sehr gut, allerdings nur lokal auf meinem Computer. Würde man das ganze durchs Internet machen, bräuchte man einen Upload von 5-6 MB pro Sekunde. (Und das auch noch bei einem schlechten FPS-Verhältnis)

3. Versuch: Server macht ein Screen und verkleinert die Auflösung zu 800x600. Server verschickt den kompletten Screen zum Client. Der Client speichert das Bild und zeigt es an. Nun wird in einer Schleife immer wieder ein Screen gemacht und jeder einzelene Pixel wird auf Veränderung überprüft. Ist ein Pixel anders, wird dieser in einem 5-Byte-Paket im Schema [Pixel-X, Pixel-Y, Pixel-Color-R, Pixel-Color-G, Pixel-Color-B] versendet.
Der Client empängt den Pixel er wird nun also im Bild ausgetauscht.
Das läuft aber soooooooooo langsam, dass man tatsächlich jeden einzelne Pixel-Veränderung beobachten kann.

Bei allen Versuchen:
- wird als Format für das Bild Bitmap benutzt
- wird zur Darstellung beim Client eine Picturebox benutzt
- eine TCP-Verbindung benutzt
- wie schon gesagt, eine Auflösung von 800x600 Pixel benutzt

Was ich nun bräuchte, wären nur theoretische Vorschläge wie man mein Anliegen bewältigen könnte.
Was ich halt gerne hätte:
- Eine Auflösung von 800x600 Pixel
- Das Bild sollte sich flüssig ändern beim Client

Ich bin für jeden Verbesserungsvorschlag/Ratschlag/Tipp wirklich dankbar!

Solltet ihr irgendwas nicht verstanden haben, bitte umbedingt nachfragen.
(Da ich weiß, dass ich nicht der beste Erklärbär bin)

Lieber Gruß. Chris ;)
Neuer Beitrag 18.03.2009 20:12 Beiträge des Benutzers | zu Buddylist hinzufügen
Jelly Jelly ist männlich
myCSharp.de-Mitglied

Dabei seit: 09.09.2007
Beiträge: 1.072
Entwicklungsumgebung: Visual Studio 2008
Herkunft: Burden (Luxemburg)


Jelly ist offline Füge Jelly Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielleicht kannst du dir an  diesem Beispiel etwas abkupfern.
Neuer Beitrag 19.03.2009 08:04 Website | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 4 Monate.
S.R. S.R. ist männlich
myCSharp.de-Mitglied

Dabei seit: 12.01.2007
Beiträge: 182
Entwicklungsumgebung: Visual Studio 2008


S.R. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi Mentor49,

stecke gerade vor der gleichen Herausforderung und wollte fragen, ob du in der Thematik schon weiter gekommen bist. Habe mir gerade den Code von RemoteScreen angeschaut (Link aus der ersten Antwort) musste allerdings feststellen, dass hier ja jeweils der ganze Screen bei jedem Request übertrage wird, oder sehe ich das falsch?

Dies ist natürlich nicht wirklich effizeit und daher die Frage an dich, was du schon rausgefunden hast - vielleicht können wir uns dann ja gegenseitig etwas unter die Arme greifen :-)

Dankend

Stefan
Neuer Beitrag 20.07.2009 19:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2010 myCSharp.de-Team. Alle Rechte vorbehalten. 08.09.2010 17:03