Fawkes API Fawkes Development Version
datagram_multicast.h
1
2/***************************************************************************
3 * datagram_multicast.h - Fawkes multicast datagram socket (UDP)
4 *
5 * Created: Sun Nov 26 17:23:25 2006
6 * Copyright 2006 Tim Niemueller [www.niemueller.de]
7 *
8 ****************************************************************************/
9
10/* This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version. A runtime exception applies to
14 * this software (see LICENSE.GPL_WRE file mentioned below for details).
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Library General Public License for more details.
20 *
21 * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22 */
23
24#ifndef _NETCOMM_SOCKET_DATAGRAM_MULTICAST_H_
25#define _NETCOMM_SOCKET_DATAGRAM_MULTICAST_H_
26
27#include <netcomm/socket/socket.h>
28#include <netinet/in.h>
29
30namespace fawkes {
31
33{
34public:
36 const char * multicast_addr_s,
37 unsigned short port,
38 float timeout = 0.f);
41
43
44 virtual Socket *clone();
45
46 virtual void bind();
47 virtual void bind(const unsigned short int port);
48 virtual void bind(const unsigned short int port, const char *hostname);
49
50 virtual void send(void *buf, size_t buf_len);
51 virtual void
52 send(void *buf, size_t buf_len, const struct sockaddr *to_addr, socklen_t addr_len)
53 {
54 send(buf, buf_len);
55 }
56
57 void set_loop(bool loop);
58 void set_ttl(int ttl);
59
60private:
61 struct ::sockaddr_in *multicast_addr;
62};
63
64} // end namespace fawkes
65
66#endif
Multicast datagram socket.
virtual void send(void *buf, size_t buf_len)
Send data.
void set_loop(bool loop)
Set loopback of sent packets.
void set_ttl(int ttl)
Set multicast time-to-live (TTL)
virtual void send(void *buf, size_t buf_len, const struct sockaddr *to_addr, socklen_t addr_len)
Send message.
MulticastDatagramSocket & operator=(MulticastDatagramSocket &s)
Assignment operator.
virtual Socket * clone()
Clone socket.
MulticastDatagramSocket(AddrType addr_type, const char *multicast_addr_s, unsigned short port, float timeout=0.f)
Constructor.
virtual ~MulticastDatagramSocket()
Destructor.
virtual void bind()
Bind socket.
Socket base class.
Definition: socket.h:64
AddrType
Address type specification.
Definition: socket.h:75
AddrType addr_type
Address type/family of socket.
Definition: socket.h:136
float timeout
Timeout in seconds for various operations.
Definition: socket.h:138
Fawkes library namespace.