libcommonc++  0.7
DatagramSocket.h++
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------
2  commonc++ - A C++ Common Class Library
3  Copyright (C) 2005-2014 Mark A Lindner
4 
5  This file is part of commonc++.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public
18  License along with this library; if not, write to the Free
19  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  ---------------------------------------------------------------------------
21 */
22 
23 #ifndef __ccxx_DatagramSocket_hxx
24 #define __ccxx_DatagramSocket_hxx
25 
26 #include <commonc++/Common.h++>
27 #include <commonc++/Buffer.h++>
29 #include <commonc++/Socket.h++>
31 
32 namespace ccxx {
33 
44 {
45  public:
46 
53  DatagramSocket(uint16_t port = 0);
54 
56  ~DatagramSocket();
57 
69  void connect(const String &addr, uint16_t port);
70 
80  void connect(const SocketAddress& addr);
81 
91  size_t send(const byte_t* buffer, size_t buflen);
92 
101  size_t send(ByteBuffer& buffer);
102 
112  size_t send(const byte_t* buffer, size_t buflen, const SocketAddress& dest);
113 
122  size_t send(ByteBuffer& buffer, const SocketAddress& dest);
123 
133  size_t receive(byte_t* buffer, size_t buflen);
134 
143  size_t receive(ByteBuffer& buffer);
144 
155  size_t receive(byte_t* buffer, size_t buflen, SocketAddress& source);
156 
166  size_t receive(ByteBuffer& buffer, SocketAddress& source);
167 
177  void setBroadcast(bool flag);
178 
185  bool getBroadcast() const;
186 
188  static const size_t MAX_DATAGRAM_SIZE;
189 
190  private:
191 
193 };
194 
195 } // namespace ccxx
196 
197 #endif // __ccxx_DatagramSocket_hxx
static const size_t MAX_DATAGRAM_SIZE
The maximum size of a datagram packet.
Definition: DatagramSocket.h++:188
A base class for network sockets.
Definition: Socket.h++:61
A socket endpoint network address.
Definition: SocketAddress.h++:46
#define COMMONCPP_API
Definition: Common.h++:126
A buffer for storing a contiguous sequence of elements.
Definition: Buffer.h++:44
A flexible, reference counted, copy-on-write, thread-safe, nullable string.
Definition: String.h++:50
#define CCXX_COPY_DECLS(CLASS)
Inlines declarations of a copy constructor and assignment operator for the class CLASS.
Definition: Common.h++:295
Definition: AllocationMap.c++:25
A User Datagram (UDP) socket.
Definition: DatagramSocket.h++:43
unsigned char byte_t
An unsigned 8-bit value.
Definition: Integers.h++:68