Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

Der UDP Manager

Der UDP Manager enthält all diejenigen Funktionen, die für den grundlegenden Verkehr der Datagramme benötigt werden. Grundsätzlich ist dies das IP Interface für Benutzeranwendungen(Clients, Server).

Wenn UDP.STX nicht geladen wurde, steht nur Dummy-Code zur Verfügung.


Die Funkionsaufrufe:

Die Funktion UDP_open
    int16  cdecl  UDP_open (uint32 rem_host, uint16 rem_port);
Öffnet eine UDP Pseudo-Verbindung.

Diese Funktion wird benutzt, um einen Endpunkt für eine Kommunikation über UDP einzurichten. Die Adressierung kann hier wieder über zwei mögliche Schemata vonstatten gehen, das STiK-kompatible, welches aber auch die Einschränkungen von STiK beinhaltet, oder das erweiterte mit kompletter BSD-Funktionalität, bei dem alle Verbindungsparameter festgelegt werden können.
Diese schließt Portnummer und IP-Adresse für den lokalen und den Remote Host ein.

Bei der STiK-kompatiblen Methode kann entweder der lokale oder der Remote Host spezifiziert werden, aber nicht beide. Um die Parameter des Remote Host einzustellen, werden diese beiden als Parameter übergeben. Bei den lokalen Parametern kann die IP-Adresse nicht gesetzt werden, da die Übergabe von lokalen Parametern über das Setzen des ersten Parameters 'rem_host' auf 0 angezeigt wird. In diesem Fall wird über 'rem_port' die lokale Portnummer eingestellt, und jeder Remote Host kann Daten über jede Portnummer an diesen Endpunkt senden.

Der erweiterte Adressierungsmodus bedient sich einiger unspezifizierter Portnummern, indem eine spezielle Bedeutung für ihre Benutzung als 'rem_port'-Parameter festgelegt wird. Wenn als zweiter Parameter UDP_EXTEND übergeben wird, wird das erweiterte Adressierungsschema verwendet. Der erste Parameter wird als Pointer auf eine CAB-Struktur interpretiert, welche zur Spezifizierung des gewünschten Sub-Sets des kompletten Sets der IP-Adresse und der Portnummer des lokalen und des Remote Host benutzt wird. Parameter, die nicht spezifiziert werden müssen, können auf Null gesetzt werden. Für passive Endpunkte kann der Remote Host oder Port unspezifiziert bleiben, lokale IP oder Portnummer werden, falls nicht festgelegt, automatisch eingesetzt.

Zu beachten ist, daß, wenn ein Host Daten zu einem nur teilweise spezifizierten Endpunkt sendet, der Endpunkt eine vollständig spezifizierte Pseudo-Verbindung wird. Kein anderer Host kann dann mehr Daten an diesen Endpunkt senden. Wenn Sie immer offene Endpunkte benötigen, rufen Sie einfach noch einmal UDP_open auf oder verwenden Sie mehrere passive Endpunkte zur gleichen Zeit.

UDP_open wartet nicht darauf, daß der Endpunkt vollständig spezifiziert wird, sondern kehrt sofort zurück. Sie müssen CNgetinfo aufrufen und die Info, auf die der üergebene Pointer zeigt, überprüfen, um herauszufinden, ob der Endpunkt inzwischen vollständig spezifiziert wurde.

Übergibt ein nicht-negatives Verbindungshandle oder einen (negativen) Fehlercode. Dieser kann sein: E_UNREACHABLE (es gibt keine Route zum Zielhost oder die Kette physischer Verbindungen ist unterbrochen) oder E_NOMEM (der benötigte Speicher konnte nicht angefordert werden).

Bitte beachten: Wenn UDP.STX nicht geladen ist, ist nur eine Dummy-Funktion verfügbar. Diese gibt immer E_UNREACHABLE zurück.


Die Funktion UDP_close
    int16  cdecl  UDP_close (int16 handle);
Schließt eine UDP Pseudo-Verbindung.

Nachdem ein Endpunkt einer UDP-Verbindung von UDP_open geöffnet wurde und durch Aufrufe von UDP_send und den CN* -Aufrufen benutzt worden ist, muß er abschließend geschlossen werden, sobald er nicht mehr gebraucht wird. Wird das nicht getan, so bleibt das zugehörige Handle permanent blockiert.
Obwohl eine Menge Handles zur Verfügung stehen, wird bei wiederholtem Fehlverhalten zuerst das System langsamer, und möglicherweise werden keine Handles mehr zur Verfügung stehen. Dies muß unter allen Umständen vermieden werden.

Der einzige Parameter dieses Aufrufs ist das Pseudo-Verbindungs-Handle, das von UDP_open übergeben wurde. Nach dem Aufruf kehrt UDP_close sofort zurück.

Übergibt E_NORMAL, oder E_BADHANDLE, wenn das übergebene Handle ungültig ist.

Wenn UDP.STX nicht geladen wurde, steht nur Dummy-Code zur Verfügung. Es wird dann immer E_BADHANDLE übergeben.


Die Funktion UDP_send
    int16  cdecl  UDP_send (int16 handle, char *buffer, int16 length);
Verschickt Daten über eine UDP Pseudo-Verbindung.

Ein Datenblock, der über die Speicheradresse (übergeben mit dem Parameter 'buffer') und die Größe ('amount') festgelegt wird, wird als einzelnes Datagramm, welches den Pseudo-Verbindungs-Handle 'handle' zurücklieferte, an den in UDP_open spezifizierten Host und Port abgeschickt. Fragmentierung und erneute Zusammenfügung werden bei Bedarf vorgenommen. Dieses Vorgehen ist für die aufrufende Applikation völlig transparent.

Gibt bei Erfolg E_NORMAL, oder E_BADHANDLE (übergebenes Handle ist ungültig), E_LISTEN (Pseudo-Verbindung noch nicht vollständig spezifiziert), E_NOMEM (Speicherallozierung gescheitert) oder E_UNREACHABLE (keine Route zum Zielhost oder Leitung physikalisch unterbrochen) zurück.

Wenn UDP.STX nicht geladen wurde, steht nur Dummy-Code zur Verfügung.
Es wird dann immer E_BADHANDLE übergeben.


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum