PPL7-Icon Patrick's Programming Library Version 7.0.0 - Dokumentation
ppl7::UDPSocket Klassenreferenz

UDP-Socket-Klasse. Mehr ...

Öffentliche Methoden

 UDPSocket ()
 Konstruktor der Klasse. Mehr ...
 
virtual ~UDPSocket ()
 Destruktor der Klasse. Mehr ...
 
int Bind (const char *host, int port)
 
int GetDescriptor ()
 
int RecvFrom (void *buffer, int maxlen)
 
int RecvFrom (void *buffer, int maxlen, String &host, int *port)
 
int RecvFrom (String &buffer, int maxlen)
 
int SetReadTimeout (int seconds, int useconds)
 
void setTimeoutRead (int seconds, int useconds)
 Lese-Timeout festlegen. Mehr ...
 
void setTimeoutWrite (int seconds, int useconds)
 Schreib-Timeout festlegen. Mehr ...
 
Server functions
void bind (const String &host, int port)
 Socket auf eine IP-Adresse und Port binden. Mehr ...
 
virtual int receiveConnect (UDPSocket *socket, const String &host, int port)
 
bool isListening () const
 
void stopListen ()
 
void signalStopListen ()
 
void listen (int timeout=100)
 
Misc
int getDescriptor ()
 Descriptor des Sockets auslesen. Mehr ...
 
void setBlocking (bool value)
 Bei Lesezugriffen blockieren. Mehr ...
 
bool isWriteable ()
 
bool isReadable ()
 
bool waitForIncomingData (int seconds, int useconds)
 Auf eingehende Daten warten. Mehr ...
 
bool waitForOutgoingData (int seconds, int useconds)
 Warten, bis der Socket beschreibbar ist. Mehr ...
 
SockAddr getSockAddr () const
 
SockAddr getPeerAddr () const
 
Client functions
size_t sendTo (const String &host, int port, const void *buffer, size_t bytes)
 
size_t sendTo (const String &host, int port, const String &buffer)
 
void setTimeoutConnect (int seconds, int useconds)
 
void setSource (const String &interface_name, int port=0)
 Quell-Interface und Port festlegen. Mehr ...
 
void connect (const String &host_and_port)
 Verbindung aufbauen. Mehr ...
 
void connect (const String &host, int port)
 
bool isConnected () const
 Prüfen, ob eine Verbindung besteht. Mehr ...
 
void disconnect ()
 
size_t write (const String &str, size_t bytes=0)
 
size_t write (const WideString &str, size_t bytes=0)
 
size_t write (const ByteArrayPtr &bin, size_t bytes=0)
 
size_t write (const void *buffer, size_t bytes)
 Daten schreiben. Mehr ...
 
size_t writef (const char *fmt,...)
 

Private Attribute

int connect_timeout_sec
 
int connect_timeout_usec
 
bool connected
 
void * socket
 
String SourceInterface
 
int SourcePort
 
int timeout_sec
 
int timeout_usec
 

Ausführliche Beschreibung

Include:
#include <ppl7-inet.h>
Beschreibung:
Mit dieser Klasse können Pakete per UDP verschickt und empfangen werden.

Beschreibung der Konstruktoren und Destruktoren

ppl7::UDPSocket::UDPSocket ( )
Include:
#include <ppl7-inet.h>
Beschreibung:
Initialisiert interne Daten der Klasse
ppl7::UDPSocket::~UDPSocket ( )
virtual
Include:
#include <ppl6-inet.h>
Beschreibung:
De-Initialisiert interne Daten der Klasse

Dokumentation der Elementfunktionen

void ppl7::UDPSocket::bind ( const String host,
int  port 
)
Beschreibung:
Diese Funktion muss aufgerufen werden, bevor man mit CTCPSocket::Listen einen TCP-Server starten kann. Dabei wird mit host die IP-Adresse festgelegt, auf die sich der Server binden soll und mit port der TCP-Port. Es ist nicht möglich einen Socket auf mehrere Adressen zu binden.
Parameter
[in]hostIP-Adresse, Hostname oder "*". Bei Angabe von "*" bindet sich der Socket auf alle Interfaces des Servers.
[in]portDer gewünschte TCP-Port
Ausnahmebehandlung
OutOfMemoryException
ResolverException
SettingSocketOptionException
CouldNotBindToInterfaceException
CouldNotOpenSocketException
int ppl7::UDPSocket::Bind ( const char *  host,
int  port 
)
void ppl7::UDPSocket::connect ( const String host_and_port)
void ppl7::UDPSocket::connect ( const String host,
int  port 
)
void ppl7::UDPSocket::disconnect ( )
int ppl7::UDPSocket::getDescriptor ( )
Beschreibung:
Mit dieser Funktion kann der Betriebssystem-spezifische Socket-Descriptor ausgelesen werden. Unter Unix ist dies ein File-Descriptor vom Typ Integer, unter Windows ein Socket-Descriptor vom Typ SOCKET.
Rückgabe
Betriebsystem-spezifischer Descriptor.
Ausnahmebehandlung
NotConnectedExceptionWird geworfen, wenn kein Socket geöffnet ist
int ppl7::UDPSocket::GetDescriptor ( )
SockAddr ppl7::UDPSocket::getPeerAddr ( ) const
SockAddr ppl7::UDPSocket::getSockAddr ( ) const
bool ppl7::UDPSocket::isConnected ( ) const
Beschreibung:
Mit dieser Funktion kann überprüft werden, ob eine TCP-Verbindung besteht.
Rückgabe
Liefert 1 zurück, wenn eine Verbindung besteht, sonst 0. Es wird kein Fehlercode gesetzt.
bool ppl7::UDPSocket::isListening ( ) const
bool ppl7::UDPSocket::isReadable ( )
bool ppl7::UDPSocket::isWriteable ( )
void ppl7::UDPSocket::listen ( int  timeout = 100)
int ppl7::UDPSocket::receiveConnect ( UDPSocket socket,
const String host,
int  port 
)
virtual
int ppl7::UDPSocket::RecvFrom ( void *  buffer,
int  maxlen 
)
int ppl7::UDPSocket::RecvFrom ( void *  buffer,
int  maxlen,
String host,
int *  port 
)
int ppl7::UDPSocket::RecvFrom ( String buffer,
int  maxlen 
)
size_t ppl7::UDPSocket::sendTo ( const String host,
int  port,
const void *  buffer,
size_t  bytes 
)
size_t ppl7::UDPSocket::sendTo ( const String host,
int  port,
const String buffer 
)
void ppl7::UDPSocket::setBlocking ( bool  value)
Beschreibung:
Durch Aufruf dieser Funktion kann festgelegt werden, ob der Socket bei Lesezugriffen blockieren soll. Nach dem Öffnen des Sockets ist dieser defaultmäßig so eingestellt, dass er bei Lesezugriffen solange blockiert (wartet), bis Daten zur Verfügung stehen. Wird er auf "Non-Blocking" gestellt, kehren die Lese-Funktionen sofort mit einer Fehlermeldung zurück, wenn noch keine Daten bereitstehen.
Parameter
[in]valueDer Wert "true" setzt den Socket in den Blocking-Modus, was auch der Default ist. Durch den Wert "false" wird er in den Non-Blocking-Modus gesetzt.
Ausnahmebehandlung
Diverse
int ppl7::UDPSocket::SetReadTimeout ( int  seconds,
int  useconds 
)
void ppl7::UDPSocket::setSource ( const String interface,
int  port = 0 
)
Beschreibung:
Diese Funktion kann aufgerufen werden, wenn der Rechner über mehrere Netzwerkinterfaces verfügt. Normalerweise entscheidet das Betriebssytem, welches Interface für eine ausgehende Verbindung verwendet werden soll, aber manchmal kann es sinnvoll sein, dies manuell zu machen.
Parameter
[in]interfaceHostname oder IP-Adresse des Quellinterfaces. Bleibt der Parameter leer, wird nur der port beachtet
[in]portPort-Nummer des Quellinterfaces. Wird 0 angegeben, wird nur das interface beachtet
Achtung
Diese Funktionalität wird derzeit nicht unter Windows unterstützt! Falls trotzdem ein host oder port definiert wurden, wird die Connect-Funktion fehlschlagen!
Bemerkungen
Sind beide Parameter leer bzw. 0, wird das Quellinterface und Port vom Betriebssystem festgelegt.
void ppl7::UDPSocket::setTimeoutConnect ( int  seconds,
int  useconds 
)
void ppl7::UDPSocket::setTimeoutRead ( int  seconds,
int  useconds 
)

Mit dieser Funktion kann ein Timeout für Lesezugriffe gesetzt werden. Normalerweise blockiert eine Leseoperation mit "Read" solange, bis die angeforderten Daten eingegangen sind (ausser der Socket wurde mit TCPSocket::setBlocking auf "Non-Blocking" gesetzt). Mit dieser Funktion kann jedoch ein beliebiger mikrosekunden genauer Timeout festgelegt werden. Der Timeout errechnet sich dabei aus seconds + useconds.

Um den Timeout wieder abzustellen, kann die Funktion mit 0 als Wert für seconds und useconds aufgerufen werden.
Parameter
[in]secondsAnzahl Sekunden
[in]usecondsAnzahl Mikrosekunden (1000000 Mikrosekunden = 1 Sekunde)
Ausnahmebehandlung
NotConnectedException
InvalidSocketException
BadFiledescriptorException
UnknownOptionException
BadAddressException
InvalidArgumentsException
void ppl7::UDPSocket::setTimeoutWrite ( int  seconds,
int  useconds 
)

Mit dieser Funktion kann ein Timeout für Schreibzugriffe gesetzt werden. Normalerweise blockiert eine Schreiboperation mit "Write" solange, bis alle Daten gesendet wurden. Mit dieser Funktion kann jedoch ein beliebiger mikrosekunden genauer Timeout festgelegt werden. Der Timeout errechnet sich dabei aus seconds + useconds.

Um den Timeout wieder abzustellen, kann die Funktion mit 0 als Wert für seconds und useconds aufgerufen werden.
Parameter
[in]secondsAnzahl Sekunden
[in]usecondsAnzahl Mikrosekunden (1000000 Mikrosekunden = 1 Sekunde)
Ausnahmebehandlung
NotConnectedException
InvalidSocketException
BadFiledescriptorException
UnknownOptionException
BadAddressException
InvalidArgumentsException
void ppl7::UDPSocket::signalStopListen ( )
void ppl7::UDPSocket::stopListen ( )
bool ppl7::UDPSocket::waitForIncomingData ( int  seconds,
int  useconds 
)
Beschreibung:
Diese Funktion prüft, ob Daten eingegangen sind. Ist dies der Fall, kehrt sie sofort wieder zurück. Andernfalls wartet sie solange, bis Daten eingehen, maximal aber die mit seconds und useconds angegebene Zeitspanne. Falls seconds und useconds Null sind, und keine Daten bereitstehen, kehrt die Funktion sofort zurück.
Parameter
[in]secondsAnzahl Sekunden, die gewartet werden soll
[in]usecondsAnzahl Mikrosekunden, die gewartet werden soll
Rückgabe
Die Funktion gibt true zurück, wenn Daten zum Lesen bereitstehen, sonst false. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
Diverse
bool ppl7::UDPSocket::waitForOutgoingData ( int  seconds,
int  useconds 
)
Beschreibung:
Diese Funktion prüft, ob Daten auf den Socket geschrieben werden können. Ist dies der Fall, kehrt sie sofort wieder zurück. Andernfalls wartet sie solange, bis der Socket beschrieben werden kann, maximal aber die mit seconds und useconds angegebene Zeitspanne. Falls seconds und useconds Null sind, und keine Daten gesendet werden können, kehrt die Funktion sofort zurück.
Parameter
[in]secondsAnzahl Sekunden, die gewartet werden soll
[in]usecondsAnzahl Mikrosekunden, die gewartet werden soll
Rückgabe
Die Funktion gibt true zurück, wenn Daten geschrieben werden können, sonst false. Im Fehlerfall wird eine Exception geworfen.
Ausnahmebehandlung
Diverse
size_t ppl7::UDPSocket::write ( const String str,
size_t  bytes = 0 
)
size_t ppl7::UDPSocket::write ( const WideString str,
size_t  bytes = 0 
)
size_t ppl7::UDPSocket::write ( const ByteArrayPtr bin,
size_t  bytes = 0 
)
size_t ppl7::UDPSocket::write ( const void *  buffer,
size_t  bytes 
)
Beschreibung:
Mit dieser Funktionen werden bytes Bytes aus dem Speicherbereich buffer an die Gegenstelle gesendet.
Parameter
[in]bufferPointer auf die zu sendenden Daten
[in]bytesAnzahl zu sendender Bytes
Rückgabe
Wenn die Daten erfolgreich geschrieben wurden, gibt die Funktion die Anzahl geschriebener Bytes zurück. Im Fehlerfall wird eine Exception geworfen.
size_t ppl7::UDPSocket::writef ( const char *  fmt,
  ... 
)

Dokumentation der Datenelemente

int ppl7::UDPSocket::connect_timeout_sec
private
int ppl7::UDPSocket::connect_timeout_usec
private
bool ppl7::UDPSocket::connected
private
void* ppl7::UDPSocket::socket
private
String ppl7::UDPSocket::SourceInterface
private
int ppl7::UDPSocket::SourcePort
private
int ppl7::UDPSocket::timeout_sec
private
int ppl7::UDPSocket::timeout_usec
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: