summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Braun2010-11-05 00:53:47 +0100
committerSebastien Braun2010-11-05 00:53:47 +0100
commitfe16864a50a0cbfaf1aca0fda8969f464192a013 (patch)
tree7ec0ea99313b83efbb5eb742a4a17b74d4e6e9dc
parentMerge branch 'input-events' (diff)
parentDocumentation for multicast file transfer. (diff)
downloadpvs-fe16864a50a0cbfaf1aca0fda8969f464192a013.tar.gz
pvs-fe16864a50a0cbfaf1aca0fda8969f464192a013.tar.xz
pvs-fe16864a50a0cbfaf1aca0fda8969f464192a013.zip
Merge branch 'mcastft'
-rw-r--r--doc/LaTeX/devel/0300-pvs.tex62
-rw-r--r--doc/LaTeX/user/0000-chapter.tex21
2 files changed, 81 insertions, 2 deletions
diff --git a/doc/LaTeX/devel/0300-pvs.tex b/doc/LaTeX/devel/0300-pvs.tex
index 92b36f7..5aa5126 100644
--- a/doc/LaTeX/devel/0300-pvs.tex
+++ b/doc/LaTeX/devel/0300-pvs.tex
@@ -175,6 +175,65 @@ erzeugt (siehe Konstruktor) und mittels der Methode \texttt{isCommand} erfährt
Falls ja leitet der Dispatche die Nachricht an die Stelle \texttt{PVS::UpdateChatClients} sonst an die Stelle \texttt{PVS::chat\_receive}, wo die Änderungen in der Client-Liste
vorgenommen werden oder die Gespräch-Nachricht der GUI abgegeben wird.
+\subsection{Multicast-Dateiversand}
+\index{Dateiversand}\index{Multicast}
+
+Der Multicast-Dateiversand geschieht über die Bibliothek \texttt{OpenPGM}\index{OpenPGM}
+(\url{http://code.google.com/p/openpgm/}), die das ,,\textit{Pragmatic General Multicast}''-Protokoll\index{Pragmatic General Multicast}
+(PGM)\index{PGM} implementiert.
+Darin enthalten ist eine Implementierung der \textit{PGMCC}-Methode zur
+Regulierung der Sendebandbreite.
+Vorteil der Verwendung einer externen Bibliothek ist,
+dass die ,,schwierigen'' Probleme bei der Implementierung einer verlässlichen Datenstrom-orientierten
+Multicast-Übertragung bereits von Netzwerkexperten gelöst wurden.
+
+Die Bibliothek ist in das PVS-System über die interne Bibliothek \texttt{libpvsmcast}\index{libpvsmcast}
+eingebunden (der Quellcode findet sich im Verzeichnis \texttt{src/net/mcast}).
+Diese stellt mit der Klasse \texttt{McastPGMSocket}\index{Klasse!\texttt{McastPGMSocket}} einen
+objektorientierten, ereignisgetriebenen Wrapper zu OpenPGM bereit.
+Die Konfigurationsdaten, die zur Einrichtung einer PGM-Verbindung notwendig sind,
+sind in der Klasse \texttt{McastConfiguration}\index{Klasse!\texttt{McastConfiguration}} verpackt.
+
+Auf der nächsten Ebene wird der Versand einer Datei von den Klassen \texttt{McastSender}\index{Klasse!\texttt{McastSender}}
+und \texttt{McastReceiver}\index{Klasse!\texttt{McastReceiver}} übernommen.
+Diese brechen den Bytestrom der Datei in Pakete auf und formatieren diese wie in Tabelle \ref{tab:mcastpacket}
+gezeigt.
+\begin{table}
+\begin{center}
+\begin{tabular}{|l|l|l|}
+\hline
+\textbf{Format} & \textbf{Feld} & \textbf{Erläuterung} \\
+\hline
+\texttt{quint64} & \texttt{magic\_number} & = 0x0x6d60ad83825fb7f9 \\
+\hline
+\texttt{quint64} & \texttt{offset} & Position des Datenpaketes in der Datei \\
+\hline
+\texttt{QByteArray} & \texttt{data} & Daten \\
+\hline
+\texttt{quint64} & \texttt{checksum} & CRC16-CCITT der vorhergehenden Felder \\
+\hline
+\end{tabular}
+\caption{Paketformat für Multicast-Dateiversand}\label{tab:mcastpacket}\index{Multicast!Paketformat}
+\end{center}
+\end{table}
+Das Paketformat ist mit Hilfe der Qt-eigenen Klasse \texttt{QDataStream} implementiert.
+Numerische Felder werden in Netzwerk-Bytereihenfolge übertragen.
+Das Ende einer Übertragung wird markiert durch ein Paket, in dessen \texttt{offset}
+alle bits gesetzt sind und dessen \texttt{data} die MD5-Prüfsumme der übertragenen Datei
+enthält.
+
+Zur Integration dieser -- prinzipiell von PVS unabhängigen -- Funktionalität
+dienen die Klassen \texttt{PVSIncomingMulticastTransfer}\index{Klasse!\texttt{PVSIncomingMulticastTransfer}
+und \texttt{PVSOutgoingMulticastTransfer}\index{Klasse!{PVSOutgoingMulticastTransfer}}.
+Diese sorgen hauptsächlich für die Konfiguration der Multicast-Funktionalität mit Hilfe der
+PVS-Konfiguration und das Generieren der richtigen Signale einerseits in Bezug auf die Benutzerschnittstelle,
+sowie andererseits in Bezug zur Netzwerkkomponente des PVS-Systems.
+
+Ein Client, der eine Datei per Multicast zu versenden wünscht, wählt zufällig einen Port und
+kündigt diesen mit der Nachricht MCASTFTANNOUNCE an.
+Falls innerhalb einer festgesetzten Zeit (30 Sekunden) keine MCASTFTRETRY-Nachricht eintrifft,
+beginnt die Übertragung.
+Die Nachricht MCASTFTCONFIG dient zum Setzen netzwerkweiter Parameter von der Steuerkonsole aus.
\section{Netzwerkkommunikation}
\index{Netzwerkkommunikation}
@@ -216,6 +275,9 @@ PVSCOMMAND & VNC & NO & Verbiete Zugriff \\
PVSCOMMAND & PING & & \\
PVSCOMMAND & VNCREQUEST & & \\
PVSCOMMAND & VNCSRVRESULT & result code & Der Rückgabewert des pvs-vncsrv Skripts \\
+PVSCOMMAND & MCASTFTANNOUNCE & sender transferID basename size port & Ankündigung eines Multicast-Transfer \\
+PVSCOMMAND & MCASTFTRETRY & sender transferID & Rückmeldung: Konfiguration des Multicast-Empfängers fehlgeschlagen, bitte auf anderem Port noch einmal versuchen \\
+PVSCOMMAND & MCASTFTCONFIG & blob & Multicast-Konfiguration aus dem angehängten Binärblob neu laden \\
PVSMESSAGE & BROADCAST & MESSAGE &\\
PVSMESSAGE & clientToAdd & & Client hinzufügen (Chat)\\
PVSMESSAGE & clientToRemove & & Client entfernen (Chat)\\
diff --git a/doc/LaTeX/user/0000-chapter.tex b/doc/LaTeX/user/0000-chapter.tex
index ae9276d..bf080d3 100644
--- a/doc/LaTeX/user/0000-chapter.tex
+++ b/doc/LaTeX/user/0000-chapter.tex
@@ -21,7 +21,7 @@ Das Hauptmenü des PVS-Clients besteht aus folgenden Elementen:
\item Disconnect: Eine bestehende Verbindung trennen.
\item Information: Zeigt in einem Dialog den Namen der aktuell verbundenen Steuerkonsole sowie das zugehörige Passwort. Diese Funktion ist für Dozenten nützlich, um beispielsweise über einen angeschlossenen Projektor die Daten für alle Clients bekannt zu geben.
\item Chat: Öffnet den Chat-Dialog.
- \item Send File: Ermöglicht das Senden einer Datei an einen Teilnehmer.
+ \item Send File: Ermöglicht das Senden einer Datei an einen oder alle Teilnehmer.
\item Config: Öffnet den Konfigurationsdialog.
\item About: Zeigt Versionsinformationen an.
\item Quit: Beendet die Applikation sowie das zugehörige Backend.
@@ -50,7 +50,9 @@ Sollte eine Nachricht eingegangen sein obwohl der Chat-Dialog geschlossen ist, s
Der Konfigurationsdialog (Abb. \ref{png:config}) erlaubt es dem Benutzer des PVS-Clients diverse Einstellungen vornehmen:
\begin{enumerate}
\item Mit diesen Reitern kann die Gruppe der zur Verfügung stehenden Optionen gewechselt werden. Unter "`Permissions"' sind Einstellungen zu finden mit denen der Benutzer seine Privatsphäre schützen kann. Unter "`Display"' ist es möglich das Verhalten der Toolbar anzupassen (z.B. die Position selbiger).
- \item Hier wird dem Dozenten das Recht erteilt eine VNC-Verbindung aufbauen zu können (z.Z ohne Funktion).
+ \item Hier wird dem Dozenten das Recht erteilt eine VNC-Verbindung aufbauen zu können.
+ Durch Auswahl der Option ,,View only'' wird das Ansehen des Bildschirminhalts erlaubt.
+ Die Wahl ,,Full access'' erlaubt die Fernsteuerung von der Steuerkonsole aus.
\item Hier wird allen anderen Benutzern das Recht erteilt eine VNC-Verbindung aufbauen zu können (z.Z ohne Funktion).
\item Durch diese zwei Checkboxen kann die Teilnahme am Chat oder das Akzeptieren von Dateiübertragungen aktiviert werden (z.Z ohne Funktion).
\end{enumerate}
@@ -61,3 +63,18 @@ Der Konfigurationsdialog (Abb. \ref{png:config}) erlaubt es dem Benutzer des PVS
\label{png:config}
\end{center}
\end{figure}
+
+\section{Dateiversand}
+Durch anklicken des Menüeintrags ,,Send File'' kann eine Datei versendet werden.
+Nach der Auswahl des Menüeintrags erscheint ein Dialogfenster, in dem entweder ein Empfänger
+ausgewählt werden (in diesem Fall erhält nur dieser Empfänger die Datei)
+oder die Checkbox ,,Send to all'' aktiviert werden kann (dann wird die Datei an alle
+angeschlossenen Rechner verschickt).
+
+Falls die Datei an alle verschickt wird, ist eine kurze Wartezeit vor Beginn des Versands und
+nach dem (scheinbaren) Ende des Versands notwendig.
+Es ist nicht sinnvoll, den Versand abzubrechen, wenn die Datei bereits vollständig verschickt
+wurde und anscheinend nichts mehr passiert, da einzelne Clients eventuell noch verlorengegangene
+Stücke der Datei nachfordern müssen.
+Das Versandfenster schließt sich automatisch, wenn alle Clients die Datei vollständig
+empfangen haben.