#include <module_net_tcp.h>
Klassendiagramm für module_net_tcp:
Öffentliche Methoden | |
module_net_tcp (void) | |
Der Konstruktor sorgt nur für gültige Anfangswerte. | |
virtual int | connect (unsigned int port) |
virtual int | connect (const char *server, unsigned int port) |
virtual int | disconnect (void) |
virtual int | send_msg (const char *msg, unsigned int size, int flags=0) |
virtual int | recv_msg (char *buffer, unsigned int size, int flags=0) |
virtual int | has_msg (void) |
virtual int | get_status (void) |
virtual bool | has_connection (void) |
virtual int | mod_load (void) |
virtual int | mod_unload (void) |
virtual int | handle_msg (const char *) |
virtual char * | get_name (void) |
Private Attribute | |
int | s |
Socket für den Server. | |
int | c |
Socket für den Client. | |
sockaddr_in | sock_addr |
sockaddr_in | client_addr |
Statische private Attribute | |
static unsigned int | num_instances = 0 |
module_net_tcp::module_net_tcp | ( | void | ) |
Der Konstruktor sorgt nur für gültige Anfangswerte.
int module_net_tcp::connect | ( | const char * | server, | |
unsigned int | port | |||
) | [virtual] |
Stellt eine Verbindung zu einem Server her, der auf dem angegebenen Port lauscht. Für den praktischen Einsatz empfiehlt sich die Verwendung eines hohen Ports, da die Ports von 1 - 1024 oftmals nur für root verwendbar sind.
server | Die Adresse des Servers. Kann eine IP-Adresse oder ein Hostname sein. | |
port | Der Port, an dem der Server eingehende Verbindungen entgegennimmt. |
Implementiert module_net.
int module_net_tcp::connect | ( | unsigned int | port | ) | [virtual] |
Erstellt einen Server, der Verbindungen entgegennimmt auf einem bestimmten Port entgegennimmt. Eventuell müssen für niedrige Ports (< 1024) root-Rechte vorhanden sein.
port | Der Port, an den Verbindungen gerichtet werden. |
Momentan werden Verbindungen von jeder Adresse erlaubt. Dies könnte man auch ändern, z.B. auf ein Subnetz.
Implementiert module_net.
int module_net_tcp::disconnect | ( | void | ) | [virtual] |
Schließt die Verbindung oder beendet den Server, je nachdem, welcher Modus gerade aktiv ist.
Implementiert module_net.
virtual char* module_net_tcp::get_name | ( | void | ) | [inline, virtual] |
int module_net_tcp::get_status | ( | void | ) | [virtual] |
Gibt den aktuellen Status des Moduls zurück. Momentan nicht verwendet.
Implementiert module_net.
int module_net_tcp::handle_msg | ( | const char * | msg | ) | [virtual] |
Behandelt Nachrichten. Wenn das Modul ein Server ist und gerade eine Clientverbindung vorliegt, wird eine Netzwerknachricht vom Typ MSG_LOG erstellt, die die empfangene Modulnachricht enthält und an den Client weiterleitet. Dieser kann sie dann anzeigen.
msg | Die empfangene Nachricht |
Implementiert module.
bool module_net_tcp::has_connection | ( | void | ) | [virtual] |
Gibt den Status der Verbindung zurück.
Implementiert module_net.
int module_net_tcp::has_msg | ( | void | ) | [virtual] |
Überprüft, wie viele Bytes auf die Abholung am Socket warten.
Implementiert module_net.
int module_net_tcp::mod_load | ( | void | ) | [virtual] |
int module_net_tcp::mod_unload | ( | void | ) | [virtual] |
Beenden des Moduls. Schließt u.A. offene Sockets und die setzt die Verbindung zurück.
Implementiert module_net.
int module_net_tcp::recv_msg | ( | char * | buffer, | |
unsigned int | size, | |||
int | flags = 0 | |||
) | [virtual] |
Empfängt Nachrichten, die auf den Server oder den Client warten.
buffer | Der Puffer, in den die Daten geschrieben werden sollen. | |
size | Die Größe des Puffers in Bytes. | |
flags | Optionale flags. Unter recv(2) gibt es mehr Informationen. |
Implementiert module_net.
int module_net_tcp::send_msg | ( | const char * | msg, | |
unsigned int | size, | |||
int | flags = 0 | |||
) | [virtual] |
Sendet Nachrichten an den Server oder die Clients. Standardmäßig werden dabei keine send flags gesetzt. In bestimmten Fällen mag dies aber von Vorteil sein.
msg | Die zu sendende Nachricht. | |
size | Die Größe der Nachricht in Bytes. | |
flags | Optionale Parameter. Unter send(2) finden sich mehr Informationen. |
Implementiert module_net.
int module_net_tcp::c [private] |
Socket für den Client.
sockaddr_in module_net_tcp::client_addr [private] |
unsigned int module_net_tcp::num_instances = 0 [static, private] |
Zählt alle Instanzen des Moduls. Somit ist die Zuweisung einer eindeutigen ID möglich. Momentan nicht verwendet.
int module_net_tcp::s [private] |
Socket für den Server.
sockaddr_in module_net_tcp::sock_addr [private] |