Diese Routinen vereinfachen die Arbeit mit den für die
Multicastkommunikation erforderlichen Sockets .
Die Funktionen _to() und _from() haben
als ersten Parameter einen Zeiger auf eine mc_sock Struktur.
Diese Struktur wird von den Funktionen _send_socket() und
_read_socket() initalisiert.
- get_send_socket(u_short port,char *gruppe,u_short ttl)
-
Diese Funktion öffnet einen Socket , der anschließend
zum Versand von Paketen an die angegebene Multicastadresse
gruppe und
UDP-Port port genutzt werden kann. Die Pakete erhalten beim
Versand eine TTL von ttl. Beispiel:
struct mc_sock *send_sock;
send_sock=get_send_socket(5432,"mcntp-directory.mcast.net",64);
- get_read_socket(u_short port,char *gruppe)
-
Diese Funktion öffnet einen Socket , der anschließend
zum Empfang von Paketen der angegebenen Multicastgruppe gruppe auf dem
angegebenen UDP-Port port genutzt werden kann. Beispiel:
struct mc_sock *read_sock;
read_send_sock=get_read_socket(5432,"mcntp-directory.mcast.net");
- send_to(struct mc_sock *to,char *buf,int len)
-
Versendet den Inhalt eines Puffers buf mit der Länge len
als ein Paket über den angegebenen Socket to, der
zuvor mit _send_socket() initialisiert worden sein muß.
Beispiel:
/* send_sock von oben */
res=send_to(send_sock,"Hello World",11);
if(res!=11) { /* Fehler */ }
- recv_from(struct mc_sock *from,char **buf, int len,int mode)
-
Liest ein Paket von dem angegebenen Socket from in
den Puffer *buf ein. Es werden höchstens len Bytes
gelesen. Wenn mode auf Null gesetzt ist, wartet
_from() bis Daten zum Lesen vorhanden sind. Ist mode
auf Eins gesetzt, so kehrt _from() sofort zurück, selbst
wenn keine Daten vom Socket gelesen werden konnten. Beispiel:
/* read_sock von oben */
char buf[200];
res=read_from(read_sock,&buf,200,0);
printf("Es wurde folgender Text erhalten: %s\n",buf);
- multicast_dont_loop(struct mc_sock *mcs)
-
Normalerweise erhalten Multicastempfänger, die auf dem gleichen Host
sind, wie der Sender auch die Daten vom Sender (vgl. 2.2.2).
Mit dieser Funktion kann dieses Verhalten unterbunden werden.