|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Wenn UDP.STX nicht geladen wurde, steht nur Dummy-Code zur Verfügung.
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.
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.
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.
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.
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.
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).
Die Funkionsaufrufe:
Die Funktion UDP_open
int16 cdecl UDP_open (uint32 rem_host, uint16 rem_port);
Öffnet eine UDP Pseudo-Verbindung.
Diese schließt Portnummer und IP-Adresse für den lokalen und den
Remote Host ein.
Die Funktion UDP_close
int16 cdecl UDP_close (int16 handle);
Schließt eine UDP Pseudo-Verbindung.
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.
Die Funktion UDP_send
int16 cdecl UDP_send (int16 handle, char *buffer, int16 length);
Verschickt Daten über eine UDP Pseudo-Verbindung.
Es wird dann immer E_BADHANDLE übergeben.
English version not yet available. |