Auch Spielereien lassen sich ab und zu einsetzen, um Prinzipien zu erläutern. Im vorliegenden Fall handelt es sich darum, wie mit einem mobilen Gerät (Nokia 770) über eine WLAN-Netzverbindung die Applikation OpenOffice.org mit Impress als Präsentationsprogramm ferngesteuert werden kann.
OpenOffice.org wird mit den folgenden Parametern gestartet:
ooffice "-accept=socket,host=localhost, port=2002;urp;"
Anschließend können über eine Netzwerkverbindung Daten ausgetauscht
werden. Bisher ist nur die Richtung hin zu OpenOffice.org realisert. Die
beiden Module server.py
, 553 Byte und
impressCalls.py
, 1866 Byte [inkl. Kommentierung und
Testausgaben] erledigen die serverseitige Verbindung zur geöffneten
Applikation. Mit python server.py
wird der Server gestartet
und wartet nun auf Anfragen …
Um die Verbindung zu testen, kann eine
telnet
-Sitzung auf den Port 2728 des Servers initiiert
werden. Nach erfolgter Verbindung kann mit FW
rsp.
BW
eine (noch nicht im Präsentationsmodus!)
geöffnete Präsentation gesteuert werden. Allerdings kann mit dieser
Varinate immer nur genau ein Kommando abgesetzt werden, danach wird die
telnet-Sitzung geschlossen.
Verfügt man über ein N770, so kann die Steuerung nach der Installation des Debian-Pakets frade.no-ip.info:2080/~ivan/oopc/oopc.html mit den Schaltflächen Forward und Back vorgenommen werden.
Der Autor hat sich eine Benutzungsoberfläche zum Ziel gesetzt, die in der folgenden Abbildung dargestellt ist:
Wie wird es auf der Seite des Klienten realisiert? Zunächst wird ein Sockel instanziiert. Über diesen wird die Verbindung initiiert – dazu wird die IP-Nummer des Klienten angegeben und der Port 2728 ausgewählt. Da der Server einen der beiden Zeichenketten "FW" oder "BW" erwartet, wird eine dieser Zeichenketten an den Server übermittelt. Anschließend wird der Sockel geschlossen. Die folgenden – voll funktionsfähigen – Zeilen stellen den Kern der Fernsteuerung bereit:
% % from socket import * sockel = socket(AF_INET, SOCK_STREAM) sockel.connect(("127.0.0.1",2728) ) sockel.send("FW") sockel.close()