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 
30 namespace fawkes {
31 
32 class MulticastDatagramSocket : public Socket
33 {
34 public:
36  const char * multicast_addr_s,
37  unsigned short port,
38  float timeout = 0.f);
40  virtual ~MulticastDatagramSocket();
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 
60 private:
61  struct ::sockaddr_in *multicast_addr;
62 };
63 
64 } // end namespace fawkes
65 
66 #endif
fawkes::MulticastDatagramSocket::operator=
MulticastDatagramSocket & operator=(MulticastDatagramSocket &s)
Assignment operator.
Definition: datagram_multicast.cpp:86
fawkes::MulticastDatagramSocket::clone
virtual Socket * clone()
Clone socket.
Definition: datagram_multicast.cpp:161
fawkes::MulticastDatagramSocket::set_loop
void set_loop(bool loop)
Set loopback of sent packets.
Definition: datagram_multicast.cpp:187
fawkes::MulticastDatagramSocket::send
virtual void send(void *buf, size_t buf_len)
Send data.
Definition: datagram_multicast.cpp:173
fawkes::MulticastDatagramSocket::set_ttl
void set_ttl(int ttl)
Set multicast time-to-live (TTL)
Definition: datagram_multicast.cpp:199
fawkes::MulticastDatagramSocket::MulticastDatagramSocket
MulticastDatagramSocket(AddrType addr_type, const char *multicast_addr_s, unsigned short port, float timeout=0.f)
Constructor.
Definition: datagram_multicast.cpp:55
fawkes::MulticastDatagramSocket
Definition: datagram_multicast.h:36
fawkes
fawkes::MulticastDatagramSocket::~MulticastDatagramSocket
virtual ~MulticastDatagramSocket()
Destructor.
Definition: datagram_multicast.cpp:76
fawkes::MulticastDatagramSocket::bind
virtual void bind()
Bind socket.
Definition: datagram_multicast.cpp:110
fawkes::Socket::timeout
float timeout
Definition: socket.h:142
fawkes::Socket::AddrType
AddrType
Address type specification.
Definition: socket.h:79
fawkes::Socket
Definition: socket.h:67
fawkes::Socket::addr_type
AddrType addr_type
Definition: socket.h:140