|
In der Version für Windows NT wird die WINSOCK-Bibliothek im Konstruktor initialisiert. Um im Objekt den Status der Initialisierung zu kennen existiert der Aufzählungstyp WINSOCKETSTATUS, der folgende Werte annehmen kann:
- nicht initialisiert
- initialisiert
| |
|
Die Basisklasse Socket verfügt über zwei private Datenelemente, die auch nur in der Microsoft-Version vorhanden sind.
| Private Datenelemente |
WSAData WSADaten;
Die Variable vom Typ WSAData wird für die Initialisierung der WINSOCK-Bibliothek benötigt. Bei dieser Initialisierung wird die Struktur mit Daten von der Bibliothek gefüllt.
| Variable WSADaten |
WORD wWinsockVersion;
Die Variable wWinsockVersion enthält die benötigte Version der WINSOCK-Bibliothek. Sie ist mit 1.1 initialisiert.
| Variable wWinsockVersion |
|
In der Struktur vom Typ WSAData befinden sich die nachfolgenden Elemente.
| Struktur WSAData |
WORD wVersion
Die Variable wVersion vom Typ WORD gibt die Version an, die die WINSOCK-Bibliothek unterstützt.
| Variable wVersion |
WORD wHighVersion
Die Variable wHighVersion vom Typ WORD gibt die höchste Version an, die die WINSOCK-Bibliothek unterstützen kann. Der Inhalt dieser Variablen ist in der Regel identisch mit dem Wert der Variablen wVersion.
| Variable wHighVersion |
char szDescription[WSADESCRIPTION_LEN+1]
Das Characterarray szDescription enthält eine Beschreibung der Implementierung der WINSOCK-Bibliothek. Hier steht in der Regel der Name des Herstellers.
| Variable szDescription |
char szSystemStatus[WSASYS_STATUS_LEN+1]
Das Characterarray szSystemStatus enthält Status oder Konfigurationsinformationen. Bei der Microsoft-WINSOCK-Implementierung steht hier der Text running.
| Variable szSystemStatus |
unsigned short iMaxSockets
Die Variable iMaxSockets vom Typ unsigned short gibt die maximal zur Verfügung stehende Socketanzahl bei dieser Implementierung zurück. In Windows NT ist dieser Wert 32767.
| Variable iMaxSockets |
unsigned short iMaxUdpDg
Die Variable iMaxUdpDg vom Typ unsigned short enthält die maximale Größe der Datagramme des UDP-Protokolls in Bytes. Sie ist 65527.
| Variable iMaxUdpDg |
char FAR * lpVendorInfo
Im Characterarray lpVendorInfo kann jeder Hersteller eigene Informationen unterbringen.
Geschützte Elemente
Die Klasse Socket verfügt über drei geschützte Elemente:
| Variable lpVendorInfo |
WINSOCKETSTATUS WSStatus;
WSStatus enthält den Status der WINSOCK-Bibliothek bezüglich der Initialisierung.
| Variable WSStatus |
Int nFehler;
nFehler enthält 0, wenn bei der letzten aufgerufenen Memberfunktion kein Fehler auftrat. Trat ein Fehler auf, so enthält die Variable den Fehlercode der WINSOCK-Bibliothek, der mit der Funktion WSAGetLastError ermittelt wurde.
| Variable nFehler |
SOCKET sSocket;
sSocket enthält den Socketdeskriptor. Dieser Deskriptor wird bei nahezu allen WINSOCK-Bibliotheksaufrufen benötigt.
Die Funktionen der Klasse Socket sind public.
Socket(void)
| Variable sSocket |
|
Der Konstruktor benötigt keinen Parameter. In der Windows-NT-Version initialisiert er die WINSOCK-Bibliothek durch den Funktionsaufruf WSAStartup. Nachdem die Bibliothek initialisiert ist, können die Funktionen dieser Bibliothek verwendet werden.
| Konstruktor |
virtual ~Socket()
Der Destruktor schließt den Socket und deinitialisiert die WINSOCK-Bibliothek durch den WSACleanup-Funktionsaufruf.
Die folgenden sieben Memberfunktionen sind nur bei der Microsoft-Version der Socket-Klasse relevant. Sie liefern die Daten aus der WSAData-Struktur, die bei der Initialisierung der WINSOCK-Bibliothek erhalten wurden.
| Destruktor |
int nVersion(int& nUnterversion)
nVersion liefert die Version der WINSOCK-Bibliothek als Funktionsergebnis. Über den Parameter nUnterversion erhält der Aufrufer die Unterversionsnummer. Ist die Initialisierung der WINSOCK-Bibliothek fehlgeschlagen, so liefert die Funktion 0 als Ergebnis.
| Memberfunktion nVersion |
int nHoechsteVersion(int& nUnterversion)
nHoechsteVersion liefert die höchste Version, die von der WINSOCK-Bibliothek unterstützt wird. Die Aufteilung von Versions- und Unterversionsnummer ist identisch derjenigen bei der Funktion nVersion. Ist die Initialisierung der WINSOCK-Bibliothek fehlgeschlagen, so liefert die Funktion 0 als Ergebnis.
| Memberfunktion nHoechsteVersion |
char *pszBeschreibung()
pszBeschreibung liefert die Beschreibung des Herstellers. Ist die Initialisierung der WINSOCK-Bibliothek fehlgeschlagen, so liefert die Funktion einen Leerstring als Ergebnis.
| Memberfunktion pszBeschreibung |
char *pszSystemStatus()
pszSystemStatus liefert den Systemzustand der WINSOCK-Bibliothek. Ist die Initialisierung der WINSOCK-Bibliothek fehlgeschlagen, so liefert die Funktion einen Leerstring als Ergebnis.
| Memberfunktion pszSystemStatus |
unsigned short uiVerfuegbareSockets()
uiVerfuegbareSockets gibt die Anzahl der zur Verfügung stehenden Sockets zurück. Ist die Initialisierung der WINSOCK-Bibliothek fehlgeschlagen, so liefert die Funktion 0 als Ergebnis.
| Memberfunktion uiVerfuegbareSockets |
unsigned short uiDatagramGroesse()
Die Memberfunktion uiDatagramGroesse gibt die maximale Datagrammgröße der UDP-Pakete zurück. Ist die Initialisierung der WINSOCK-Bibliothek fehlgeschlagen, so liefert die Funktion 0 als Ergebnis.
| Memberfunktion uiDatagramGroesse |
char *pszHerstellerInfo()
pszHersteller gibt die herstellerspezifischen Informationen zurück. Ist die Initialisierung der WINSOCK-Bibliothek fehlgeschlagen, so liefert die Funktion einen Leerstring als Ergebnis.
Die weiteren Funktionen sind nicht Microsoft-spezifisch.
| Memberfunktion pszHersteller |
int nAccept(SOCKET& sNeuerSocket,
unsigned long& ulIPAdresse,
unsigned short& usPort)
nAccept akzeptiert eine Verbindung und liefert einen Socket für diese Verbindung zurück. Ein Server bindet seinen Socket an einen Port. Unter dieser Portnummer ist er ständig für eingehende Anfragen verfügbar. Will ein Client mit ihm kommunizieren, akzeptiert der Server durch den Funktionsaufruf accept diese Verbindung. Von der Socketbibliothek wird ein neuer Socket erzeugt, der mit dem Client kommuniziert. Dieser Socket wird zurückgegeben. Der ursprüngliche Socket bleibt weiterhin an den bekannten Port gebunden, um dort erreichbar zu sein.
nAccept liefert den neuen Socket als ersten Parameter zurück. In den Parametern zwei und drei erhält der Aufrufer die Internetadresse und die Portnummer des Clients, der mit Server kommunizieren will. Verlief der accept-Funktionsaufruf fehlerfrei, so gibt die Funktion nAccept 0 zurück. Im Fehlerfall erhält man den Fehlercode der WINSOCK-Bibliothek.
| Memberfunktion nAccept |
int nBind(unsigned long ulIPAdresse,
unsigned short usPort)
nBind bindet einen Socket an einen lokalen Port. Diese Funktion ist wichtig, wenn ein Serverdienst immer unter derselben Portnummer erreichbar sein soll. Die Funktion benötigt als Parameter die Internetadresse des lokalen Computers und die Portnummer, an die der Socket gebunden werden soll. Konnte der Socket nicht an den lokalen Port gebunden werden, liefert die Funktion den WINSOCK Fehlercode. Verlief das Binden erfolgreich, so ist das Funktionsergebnis 0.
| Memberfunktion nBind |
int nBind(char *pszIPAdresse,
unsigned short usPort)
nBind ist funktional identisch mit der überlagerten nBind Memberfunktion. Bei dieser Version ist im ersten Parameter die Internetadresse des lokalen Computers als Zeichenkette (10.10.10.100) zu übergeben.
| Memberfunktion nBind |
int nListen(int nVerbindungen = 5)
nListen ist für Server. Ein Server hört auf eine Verbindung. Nachdem der Socket erzeugt und an einen bestimmten Port gebunden wurde, muß der Server auf eingehende Verbindungen hören. Erst nach dem Aufruf der Memberfunktion nListen ist die Kommunikationsbereitschaft hergestellt.
Die Bibliothek verwaltet eine Queue von eingehenden Verbindungen. Im Bereich von bis zu 5 Verbindungen läßt sich die Größe der Empfangsqueue über den Parameter der Funktion nVerbindungen beeinflussen. Der Parameter ist standardmäßig auf die maximale Anzahl gesetzt. Akzeptiert der Server eine Verbindung mit der Memberfunktion nAccept, so wird, wenn der Server mehrere Clients parallel bedienen will, in der Regel ein neuer Thread für die Verbindung erzeugt, und die komplette Empfangsqueue steht erneut für neue Verbindungen zur Verfügung.
| Memberfunktion nListen |
int nSetsockopt(int nOption,
int nWert)
nSetsockopt gestattet das Beeinflussen des Socket-Verhaltens. Der Funktion dürfen je nach erstem Parameter Integer- oder boolesche Werte übergeben werden. Die booleschen Werte sind aber vom Datentyp auch Integerwerte. 0 bedeutet FALSE, ungleich 0 bedeutet TRUE. Der erste Parameter bedeutet die Art, die verändert werden soll, der zweite Parameter bestimmt den neuen Wert. Die möglichen Optionen sind:
|
SO_BROADCAST
|
SO_OOBINLINE
|
|
SO_DEBUG
|
SO_RCVBUF
|
|
SO_DONTLINGER
|
SO_REUSEADDR
|
|
SO_DONTROUTE
|
SO_SNDBUF
|
|
SO_KEEPALIVE
|
TCP_NODELAY
|
Die folgenden Optionen sind unter Windows NT nicht verfügbar, sie existieren nur im BSD-Unix:
- SO_RCVLOWAT
- SO_RCVTIMEO
- SO_SNDLOWAT
- SO_SNDTIMEO
- IP_OPTIONS
Die Optionen SO_RCVBUF, SO_SNDBUF, SO_ERROR, SO_RCVLOWAT, SO_RCVTIMEO, SO_SNDLOWAT, SO_SNDTIMEO und SO_TYPE sind vom Typ int, die anderen vom Typ Boolean.
| Memberfunktion nSetsockopt |
|
SO_BROADCAST erlaubt das Senden von Broadcast-Nachrichten über Sockets. Broadcast-Meldungen waren in früheren Unix Systemen privilegierte Nachrichten.
| Option SO_BROADCAST |
|
SO_DEBUG erlaubt die Aufzeichnung von Aktionen der unteren Protokollschichten für Debugzwecke.
| Option SO_DEBUG |
|
Ist SO_DONTLINGER gesetzt, so wird vom System ein closesocket-Funktionsaufruf sofort ausgeführt, selbst wenn noch Daten für diesen Socket bereit sind, die noch nicht gelesen wurden.
| Option SO_DONTLINGER |
|
SO_DONTROUTE bestimmt, daß ausgehende Nachrichten nicht vom Standard-Routingsystem behandelt werden.
| Option SO_DONTROUTE |
|
SO_KEEPALIVE erlaubt der Protokollschicht das Senden von Nachrichten, um zu erkennen, ob die Verbindung in Ordnung ist.
| Option SO_KEEPALIVE |
|
Durch SO_OOBINLINE werden Out-Of-Band-Daten im normalen Datenstrom an den Empfänger übermittelt. Somit können die Daten durch die normalen Leseaufrufe ohne gesetztes MSG_OOB-Flag gelesen werden.
| Option SO_OOBINLINE |
|
SO_RCVBUF gestattet die Veränderung der Puffergröße für den Empfangspuffer. Durch die Änderung der Größe kann der Socket für unterschiedliche Datenmengen konfiguriert werden, um den Durchsatz zu optimieren.
| Option SO_RCVBUF |
|
SO_REUSEADDR erlaubt das Binden mehrerer lokaler Sockets an einen Port. Normalerweise kann nur ein Socket an einen Port gebunden werden. Wird ein weiterer Versuch unternommen, so erhält man die Fehlermeldung, daß die Adresse bereits benutzt ist.
| Option SO_REUSEADDR |
|
SO_SNDBUF gestattet die Veränderung der Puffergröße für den Sendepuffer. Durch die Änderung der Größe kann der Socket für unterschiedliche Datenmengen konfiguriert werden, um den Durchsatz zu optimieren.
| Option SO_SNDBUF |
|
TCP_NODELAY ist eine TCP-Protokoll-Option. Beim TCP-Protokoll werden die Datenpakete nicht 1:1 übertragen. Beim UDP-Protokoll findet die Übertragung immer 1:1 statt. Beim TCP-Protokoll werden voreingestellt mehrere zu sendende Daten (mehrere send-Aufrufe) zusammengefaßt, um die Übertragung optimal zu gestatten (geringer Protokoll-Overhead). Diese Option verhindert das Zusammenfassen.
| Option TCP_NODELAY |
|
SO_RCVLOWAT gibt die Anzahl der minimal zu empfangenden Zeichen an. Die Funktion recv blockiert, wenn keine empfangenen Daten zur Verfügung stehen, so lange, bis mindestens ein Zeichen empfangen wurde. Wird mit der Option der Wert SO_RCVLOWAT höher gesetzt, so blockiert die Funktion so lange, bis die mit der Option gesetzte Anzahl Zeichen empfangen wurde oder bis so viele Zeichen bereit sind, wie mit dem recv Aufruf gelesen werden sollen, je nachdem, welcher Wert geringer ist.
| Option SO_RCVLOWAT |
|
SO_RCVTIMEO setzt den Timeout-Wert für den Empfang von Daten. Dieser Wert gilt bei jedem empfangenen Paket wieder von neuen.
| Option SO_RCVTIMEO |
|
SO_SNDLOWAT setzt die Anzahl der Zeichen, die als eine Nachricht minimal gesendet werden müssen.
| Option SO_SNDLOWAT |
|
SO_SNDTIMEO setzt analog zur Option SO_RCVTIMEO einen Timeout-Wert für das Senden von Paketen.
| Option SO_SNDTIMEO |
|
IP_OPTIONS ist eine IP-Protokoll-Option. Das Optionenfeld im IP Header wird mit dem Wert dieser Option gefüllt.
| Option IP_OPTIONS |
int nSetLingerwerte(int fOn,
int nZeit = 0)
nSetLingerwerte beeinflußt das Verhalten der closesocket-Funktion. Sind noch Daten für einen Socket zum Lesen vorhanden, und es wird versucht, den Socket zu schließen, so gibt es zwei Möglichkeiten:
- Schließen des Sockets und Verwerfen der Daten
- Blockieren des closesocket-Funktionsaufrufs
Soll der closesocket-Funktionsaufruf blockiert werden, so muß der erste Funktionsparameter einen Wert ungleich 0 enthalten. Der zweite Parameter gibt den Timeout-Wert an. Der closesocket-Funktionsaufruf wird diese Zeitspanne blockiert, wenn in der Zwischenzeit die restlichen Daten nicht gelesen werden. Nach der Timeoutzeit wird der Socket geschlossen, auch wenn die Daten noch nicht gelesen wurden.
Ist der erste Parameter 0, so wird der Socket sofort geschlossen, und die Daten werden verworfen. Der zweite Parameter spielt in diesem Fall keine Rolle.
| Memberfunktion nSetLingerwerte |
int nGetsockopt(int nOption)
nGetsockopt gestattet das Abfragen des Verhaltens des Sockets. Der Funktion dürfen je nach erstem Parameter Integer- oder boolesche Werte übergeben werden. Die booleschen Werte sind aber vom Datentyp auch Integerwerte. 0 bedeutet FALSE, ungleich 0 bedeutet TRUE. Der erste Parameter bedeutet die Art, die verändert werden soll. Der zweite Parameter bestimmt den neuen Wert. Die möglichen Optionen sind:
|
SO_ACCEPTCONN
|
SO_OOBINLINE
|
|
SO_BROADCAST
|
SO_RCVBUF
|
|
SO_DEBUG
|
SO_REUSEADDR
|
|
SO_DONTLINGER
|
SO_SNDBUF
|
|
SO_DONTROUTE
|
SO_TYPE
|
|
SO_ERROR
|
TCP_NODELAY
|
|
SO_KEEPALIVE
|
|
Die folgenden Optionen sind unter Windows NT nicht verfügbar, sie existieren nur im BSD Unix:
- SO_RCVLOWAT
- SO_RCVTIMEO
- SO_SNDLOWAT
- SO_SNDTIMEO
- IP_OPTIONS
- TCP_MAXSEG
Die Optionen SO_BROADCAST, SO_DEBUG, SO_DONTLINGER, SO_DONTROUTE, SO_KEEPALIVE, SO_OOBINLINE, SO_RCVBUF, SO_REUSEADDR, SO_SNDBUF, TCP_NODELAY, SO_RCVLOWAT, SO_RCVTIMEO, SO_SNDLOWAT, SO_SNDTIMEO und IP_OPTIONS geben die aktuell gesetzten Werte zurück. Die Bedeutung ist identisch mit derjenigen beim Setzen der Optionen.
| Memberfunktion nGetsockopt |
|
SO_ACCEPTCONN liefert TRUE, wenn sich der Socket im Listenmodus befindet.
| Option SO_ACCEPTCONN |
|
SO_ERROR gibt den Fehlercode des zuletzt aufgetretenen Fehlers zurück. Der Fehlerstatus wird durch diesen Funktionsaufruf gelöscht.
| Option SO_ERROR |
|
SO_TYPE gibt die Art des Sockets zurück (SOCK_STREAM). Diese Option wird benötigt, wenn der Socket bei einem Server, der für jede Verbindung einen eigenen Prozeß startet, geerbt wird und die Art der Verbindung festgestellt werden muß.
| Option SO_TYPE |
|
TCP_MAXSEG gibt die maximale Segmentgröße des TCP-Protokolls an.
| Option TCP_MAXSEG |
int nGetLingerwerte(int& fOn,
int& nZeit)
nGetLingerwerte liefert die Linger-Werte zurück. Die Bedeutung des Verhaltens und der Parameter ist bei der Funktion nSetLingerwerte beschrieben.
| Memberfunktion nGetLingerwerte |
int nConnect(unsigned long ulIPAdresse,
unsigned short usPort)
nConnect baut die Verbindung zu einem anderen Socket auf. Der Socket der Gegenstelle ist über die Internetadresse des Computers und die Portnummer eindeutig adressierbar. Deshalb muß der Socket der Gegenstelle an einen Port gebunden worden sein. Selbstverständlich kann die Socketkommunikation auch eingesetzt werden, wenn beide Kommunikationspartner im selben Computer vorhanden sind. Die Werte für die Internetadresse und die Portnummer des gewünschten Kommunikationspartners müssen der Funktion als Parameter übergeben werden.
| Memberfunktion nConnect |
int nConnect(char *pszIPAdresse,
unsigned short usPort)
Der überladenen Memberfunktion nConnect muß als erster Parameter die Internetadresse des Kommunikationspartners als Zeichenkette (10.10.10.100) übergeben werden. Das weitere Verhalten ist identisch mit dem der anderen überlagerten Memberfunktion.
| Memberfunktion nConnect |
int nGetPeername(unsigned long& ulIPAdresse,
unsigned short& usPort)
nGetPeername liefert die Identifikation des Kommunikationspartners. Wenn ein Socket eine Verbindung zu einem anderen Socket aufgebaut hat, so können mit dieser Memberfunktion die Internetadresse und die Portnummer des Sockets des Kommunikationspartners ermittelt werden.
| Memberfunktion nGetPeername |
int nGetSockname(unsigned long& ulIPAdresse,
unsigned short& usPort)
nGetSockname liefert dieselben Daten wie die Memberfunktion nGetPeername, allerdings vom eigenen Socket. Diese Funktion mag unsinnig erscheinen, da man doch die Werte der eigenen Internetadresse und des eigenen Ports kennt. Erhält aber ein Programm einen Socket von einem anderen Prozeß vererbt, so kennt der Erbende diese Werte möglicherweise nicht.
| Memberfunktion nGetSockname |
int nGetFehler(void)
nGetFehler liefert den Fehlercode der zuletzt aufgerufenen Socketfunktion.
Klasse StreamSocket
Die Klasse StreamSocket ist ausgelegt für Sockets, die das TCP-Protokoll verwenden.
| Memberfunktion nGetFehler |
StreamSocket(void);
Der Konstruktor erzeugt einen Socket für das TCP-Protokoll. Der Socket wird in der Internetdomäne angelegt.
| Konstruktor |
int nRecv(char *pchBuffer,
long lAnzahlBytes,
int nFlags = 0)
nRecv empfängt Daten. Die Daten werden in dem Puffer abgelegt, auf den der erste Parameter zeigt. Die Größe der empfangenen Daten wird im zweiten Parameter übergeben. Der dritte Parameter bestimmt die Optionen, die der Funktion recv übergeben werden können. Die beiden Möglichkeiten sind:
| Memberfunktion nRecv |
|
MSG_PEEK liefert die eingehenden Daten, läßt sie aber gleichzeitig in der Eingangsqueue, so daß sie noch einmal gelesen werden können.
| Option MSG_PEEK |
|
MSG_OOB liefert Out-Of-Band-Daten, falls der Socket so konfiguriert ist. TCP ist ein gesichertes Protokoll. Die Reihenfolge der Daten bleibt durch die Übertragung gewährleistet. Da es aber von fast jeder Regel Ausnahmen gibt, kann es bei der TCP-Übertragung auch vorkommen, daß für gewisse Daten die Reihenfolge nicht eingehalten werden soll, sondern daß diese Daten möglichst schnell (vor den anderen bereits übertragenen, aber noch nicht gelesenen Daten) an den Empfänger übermittelt werden sollen. Ist der Streamsocket entsprechend konfiguriert, so werden diese Out-Of-Band-Daten bevorzugt durch die Funktion recv geliefert.
| Option MSG_OOB |
int nSend(char *pchBuffer,
long lAnzahlBytes,
int nFlags = 0)
nSend sendet Daten an den Kommunikationspartner. Die ersten beiden Parameter geben die Daten und die Länge in Bytes an. Der dritte Parameter bestimmt das Verhalten der Funktion send. Die beiden möglichen Werte sind:
| Memberfunktion nSend |
|
MSG_DONTROUTE gibt an, daß die Daten nicht in andere Netze geroutet werden sollen.
| Option MSG_DONTROUTE |
|
MSG_OOB gibt an, daß diese Daten Out-Of-Band-Daten sind, die nicht in der üblichen Reihenfolge beim Empfänger ankommen sollen, sondern dem Empfänger übermittelt werden, sobald sie eintreffen.
Klasse DatagramSocket
Die Klasse DatagramSocket ist für Sockets mit UDP-Protokoll.
| Option MSG_OOB |
DatagramSocket(void)
Der Konstruktor erzeugt einen Socket für das UDP-Protokoll. Der Socket wird in der Internetdomäne erzeugt.
| Konstruktor |
int nRecvFrom(unsigned long ulIPAdresse,
unsigned short usPort,
char *pchBuffer,
long lAnzahlBytes,
int nFlags = 0)
nRecvFrom empfängt Daten. Das UDP-Protokoll ist verbindungslos. Somit braucht für eine Übertragung von Daten nicht zuerst eine Verbindung aufgebaut zu werden. Es können unmittelbar nach dem Erzeugen und Binden des Sockets an einen Port Daten empfangen werden. Die ersten beiden Parameter beschreiben die Gegenstelle, von der die Daten empfangen wurden. Sie werden dem Aufrufer zurückgegeben. Die nächsten beiden Parameter geben Adresse und Länge des Empfangspuffers an. Der letzte Parameter beschreibt Flags, die das Verhalten der recvfrom-Funktion steuern. Die möglichen Flags sind
Sie haben dieselbe Bedeutung wie bei der Memberfunktion nRecv der Klasse StreamSocket.
| Memberfunktion nRecvFrom |
int nSendTo(unsigned long ulIPAdresse,
unsigned short usPort,
char *pchBuffer,
long lAnzahlBytes,
int nFlags = 0)
nSendTo sendet Daten an einen anderen Socket. Die Adressierung des Kommunikationspartners wird durch die ersten beiden Parameter durchgeführt. Die Daten müssen im Puffer stehen, auf den der dritte Parameter zeigt. Der vierte Parameter gibt die Anzahl der Bytes an, die übertragen werden sollen. Diese Anzahl darf nicht größer sein als die maximale UDP-Paketgröße, da UDP keine Reihenfolge der Daten gewährleistet und somit Übertragungen auf jeweils ein Paket beschränkt sind. Der letzte Parameter beschreibt das Verhalten der Funktion sendto. Die beiden möglichen Werte sind:
Die Bedeutung dieser Werte ist identisch mit denjenigen der Memberfunktion nSend der Klasse StreamSocket.
| Memberfunktion nSendTo |
int nSendTo(char *pszIPAdresse,
unsigned short usPort,
char *pchBuffer,
long lAnzahlBytes,
int nFlags = 0)
Der überladenen Memberfunktion nSendTo muß als erster Parameter die Internetadresse des Kommunikationspartners als Zeichenkette übergeben werden (10.10.10.100). Das Verhalten ist analog zu dem der anderen Memberfunktion.
| Memberfunktion nSendTo
|