Die von Terms97801 gewünschte Schnittstellendefinition ist die Version 1.1. Diese Versionsnummer bezieht sich auf die Definition der Funktionsaufrufe und sollte nicht mit der Versionsbezeichnung für die Korrekturstände der wsock32.dll eines bestimmten Netzsoftware-Herstellers verwechselt werden.
Die wsock32.dll befindet sich im Lieferumfang der Netzsoftware.
Bei Windows95 und WindowsNT ist bereits eine wsock32.dll zur Installation enthalten.
Bei dem Verbindungsaufbau über das Netz wird die wsock32.dll zuerst im Arbeitsverzeichnis, dann im Windows-Verzeichnis und danach im Pfad gesucht und gestartet. Gelingt dies nicht, zeigt Windows eine System-Fehlermeldung.
HINWEIS:
Bei Verwendung von 16bit-Netzsoftware, die keine wsock32.dll zur Verfügung stellt, sondern nur die winsock.dll, muß die 16bit-Version von
Terms97801 eingesetzt werden.
HINWEIS:
Ist auf einem System keine wsock32.dll vorhanden,
so genügt es nicht, eine wsock32.dll auf das System
zu kopieren. Die Sockets müssen zur verwendeten Netzsoftware passen,
und das System muß entsprechend konfiguriert sein. Im Normalfall geschieht
diese Konfiguration durch eine Installationprozedur.
HINWEIS:
Bei Verwendung verschiedener Sockets auf einem System kann die Tatsache genutzt
werden, daß Terms97801 die wsock32.dll zuerst im eigenen
Arbeitsverzeichnis sucht. Das System hat aber immer nur eine
wsock32.dll zur gleichen Zeit im Einsatz.
Abb. 3: Netzverbindung einstellen
Hier kann der Hostname bzw. die IP-Adresse und der Benutzername eingetragen werden. Falls mehrere Hosts zur Verfügung stehen oder mehrere Benutzer/innen mit Terms97801 arbeiten, sollte der Knopf 'Verbindungsliste bearbeiten' gedrückt werden. Im darauf erscheinenden Dialog für die Netz-Verbindungsliste können entsprechende Einträge vorgenommen werden.
Mit den beiden Radio-Schaltern kann gewählt werden, ob die Verbindung gemäß TELNET-Protokoll oder mit dem RLOGIN-Mechanismus aufgebaut wird. Im Normalfall sollte RLOGIN verwendet werden, da solche Verbindungen normalerweise schneller arbeiten. Der TELNET-Zugang wurde in erster Linie für Sytemverwalter/innen implementiert, die sich auf Rechnern einloggen wollen, auf denen kein RLOGIN zugelassen wird.
Die $TERM-Variable wird von den Anwendungen auf dem Host benutzt, um die passenden Steuersequenzen für das Terminal zu verwenden.
Die Net-Baudrate gibt an, mit welcher Geschwindigkeit die UNIX-Seite arbeiten soll. Dieser Wert kann mit stty abgefragt werden, hat aber keine Auswirkung auf die tatsächliche Geschwindigkeit, mit der die Zeichen an Terms97801 übergeben werden. Die Net-Baudrate wird nur bei RLOGIN-Verbindungen an den Host übermittelt.
Der Benutzername wird dem Host nur im Fall einer RLOGIN-Verbindung übermittelt. Wird kein Benutzername angegeben, so erscheint nach dem Verbindungsaufbau die Abfrage der login-Kennung. Wird der Benutzername angegeben und zusätzlich auf der Hostseite der Benutzername in die .rhosts eingetragen, so wird bei der Verbindung weder nach login-Kennung noch nach dem Paßwort gefragt.
Bei einem RLOGIN von einem UNIX-System ist es möglich, sich unter einem anderen als dem aktuellen Benutzernamen anzumelden (l-Option). Dieses läßt sich auch mit Terms97801 erreichen.
Mit dem Eintrag in der Terms97801-Ini-Datei
[Net]
Ownname=otto
Username=ernst
läßt sich ein Benutzername für den User am PC angeben. In obigem Beispiel meldet sich der 'otto' vom PC als 'ernst' am UNIX-System an.
Da bei einem UNIX-System der 'otto' sich bereits mit Paßwort identifiziert hat, beim PC aber nicht, wird von einer Konfigurationen die aus dem PC-Benutzernamen die Zugangsberechtigung ableitet aus Sicherheitsbedenken abgeraten.
Wird für den Verbindungsaufbau ein Hostname angegeben, so müssen in der Windows-seitigen hosts-Datei Hostname und die IP-Adresse eingetragen sein. Wird dagegen eine IP-Adresse angegeben, ist ein Eintrag in der hosts-Datei nur dann notwendig, wenn die Option 'IP-Adresse über hosts auflösen' aktiviert ist. Aus Sicherheitsaspekten sollte diese Option aktiviert werden, denn dann können auch trotz Kenntnis einer IP-Adresse nur die in der hosts angegebenen Rechner erreicht werden.
Mit der Option 'Bei Verbindungsende neu verbinden' wird nach dem Beenden einer Verbindung die Verbindung wieder neu aufgebaut. Damit ergibt sich das gewohnte Verhalten eines seriell angebundenen Terminals.
Die Option wirkt auch, wenn die TCP-Verbindung abgebaut wurde, weil für längere Zeit keine Eingaben gemacht wurden. Da dieser Timeout bei kostenpflichtigen Verbindungen (über Telefonleitungen) erwünscht ist, sollte in diesen Fällen diese Option nicht aktiviert werden.
Soll die Verbindung nur durch den Host getrennt werden, so kann das Kästchen 'Verbindungsende nur durch Host' angekreuzt werden. Diese Option wurde für die Beseitigung von Problemen geschaffen, die entstehen, wenn bei laufender Anwendung die Verbindung getrennt wird. Diese Option ist mit Vorsicht einzusetzen, da ohne Trennung durch den Host nicht nur Terms97801, sondern auch die gesamte Windows-Sitzung nicht beendet werden kann.
HINWEIS:
Wenn die Sicherheitsaspekte einen Start ohne Paßwortabfrage
zulassen, kann mit einem Eintrag in der .rhosts, und den
zusätzlich aktivierten Terms97801-Optionen 'Verbinde nach Start'
und 'Sende Zeichen nach Verbindung', mit dem Start von Terms97801
der Start einer UNIX-Anwendung verbunden werden. Mit passenden Ini-Dateien
und dem i-Schalter können so Icons für UNIX-Anwendungen im
Windows-Programm-Manager eingerichtet werden.
HINWEIS:
Dem Hostnamen oder der IP-Adresse darf durch ein Leerzeichen getrennt
eine Portnummer folgen. Wird keine Portnummer angegeben, so wird
der Port 513 verwendet, denn auf diesem Port läuft normalerweise der
rlogin-Service des UNIX-Rechners. Im Falle einer TELNET-Verbindung wird als Standard der Port 23 verwendet.
Abb. 4: Netz-Verbindungsliste
Hier können bis zu 20 Einträge für Kombinationen aus Hostname/IP-Adresse und Benutzername eingegeben werden.
Die Liste wird beim Verbinden zur Auswahl angezeigt, wenn das entsprechende Kästchen im Dialog System..Verbindung angekreuzt ist:
Abb. 5: Verbinde-Dialog für das Netz
Eine Verbindung kann durch Doppelklick in eine Zeile der Verbindungsliste gestartet werden. Wird der Knopf 'Verbinde' gedrückt, so werden für den Verbindungsaufbau die Werte aus den Feldern 'Hostname' und 'Benutzername' benutzt. Diese Werte müssen nicht in der Liste enthalten sein und können vor dem Drücken von 'Verbinde' geändert werden.
Im Falle einer TELNET-Verbindung wird auf der Hostseite der Telnet-Dämon in.telnetd gestartet.
Die Einstellungen des Pseudo-TTYs können, wie die der normalen TTY-Schnittstelle, mit dem Befehl stty -a angezeigt und gesetzt werden. Dieser Befehl ermöglicht die Einstellung des Bitmodes, der Parität und der Behandlung von Sonderzeichen, wie 'backspace' und 'del'.
Abb. 6: Prozeßbaum bei drei Netzverbindungen und einer seriellen Verbindung
Es ist sicherlich eine gute Idee, bei Problemen mit dem Netz das Ping-Programm und die Terminalemulation der Netzsoftware zu probieren. Läßt sich mit einem dieser beiden Programme keine Verbindung aufbauen, liegt das Problem eindeutig in der Installation der Netzsoftware.
Funktionieren beide Programme, so ist dies aber keine Garantie für eine saubere Installation der Netzsoftware. Das Ping-Programm verwendet normalerweise nicht die Windows-Sockets, sondern nutzt die herstellerspezifische Schnittstelle der Netzsoftware.
Terms97801 zeigt bei einem Netzfehler einen ausführlichen Fehlerdialog an. Bis zur Anzeige der Fehlermeldung kann einige Zeit vergehen, da vorher eventuell die Timeouts abgelaufen sein müssen. Der Fehler-Dialog hat folgende Gestalt:
Abb. 7: Terms97801-Netzfehleranzeige im Expertenmodus
Die Terms97801-Fehlernummer gibt die Stelle im Code von Terms97801 an, an der der Fehler aufgetreten ist. Der Terms97801-Fehlertext beschreibt den aufgetretenen Fehler.
Außerdem wird auch die Fehlernummer angezeigt, die von der verwendeten Socket-Funktion zurückgegeben wurde. Damit die Bedeutung der Fehlernummer nicht in der Socket-Spezifikation nachgeschlagen werden muß, wird auch die englische Beschreibung des Socket-Fehlers mit ausgegeben. Der Socket-Fehler gibt den Grund an, warum der Fehler aufgetreten ist.
In obigem Beispiel besagt die Terms97801-Fehlermeldung, daß keine Verbindung aufgebaut werden konnte. Der Socket-Fehler gibt an, daß der angewählte Host innerhalb der Timeout-Zeitspanne keine Antwort gab. In diesem konkreten Fall war der Host nicht eingeschaltet.
Derselbe Terms97801-Fehler kann aber auch aus anderen Gründen auftreten, z.B. weil der angegebene Host nicht in der Datei hosts aufgeführt ist (No data record available) oder das Netz nicht läuft (Network is down).
Im Fehlermeldungs-Dialog werden auch die herstellerspezifischen Informationen
angezeigt. Diese Information fällt je nach Socket-Hersteller sehr
unterschiedlich aus, und reicht von keiner Angabe bis zur Angabe des Datums
des Compilerlaufs.
Die herstellerspezifischen Informationen können nützlich sein,
wenn auf einem System verschiedene Sockets installiert sind.
Für den Fall, daß keine Terms97801-Fehlermeldung erscheint und die Verbindung sofort wieder getrennt wird, sollte überprüft werden, ob für das UNIX-System eine rlogin-Berechtigung besteht. Ab UNIX 5.4 kann mit dem Programm truss protokolliert werden, was auf der UNIX-Seite passiert. Hierzu werden mit truss der Netzdämon inetd und seine Kindprozesse beim Verbindungsaufbau beobachtet. Zuerst muß die Prozeß-ID des inetd ermittelt werden. Der truss-Aufruf kann dann so aussehen:
truss -f -o /tmp/terms.truss -p 307
Alle Netzeinstellungen werden in der Sektion [Net] eingetragen. Die angegebenen Werte sind die Werte, die verwendet werden, falls kein Eintrag vorhanden ist.
NetBufSize=4096 Wert liegt zwischen 0 und 8192 und gibt die Größe des Netz-Puffers an.
FreeSockets=N Y oder N
Mit der Angabe Y wird die wsock32.dll beim Verbindungsende
freigegeben und für einen neuen Verbindungsaufbau neu angefordert. Diese
Angabe hilft, wenn nach einem Verbindungsende ein erneuter Verbindungsaufbau
nicht oder erst nach Ablauf eines Timeouts möglich ist.
LingerOnOff=1 0 für kein Linger oder 1 für Linger
Linger=0 Lingerzeit in Sekunden; Wert liegt zwischen 0 und 100
Shutdown=0 -1, 0, 1 oder 2
Diese Werte entsprechen den Werten für die shutdown-Funktion des Socket-APIs. Bei der Angabe von
-1 wird die shutdown-Funktion nicht aufgerufen.
KeepAlive=N Y oder N
Ist hier Y angegeben, so wird die KeepAlive-Option gesetzt.
TCPDebug=N Y oder N
Ist hier Y angegeben, so wird die Debug-Option gesetzt. Die Wirkung dieser
Option hängt von den verwendeten Sockets ab.