44 #ifndef COMMONCPP_UDP_H_ 45 #define COMMONCPP_UDP_H_ 49 #ifndef COMMONCPP_CONFIG_H_ 50 #include <commoncpp/config.h> 53 #ifndef COMMONCPP_STRING_H_ 57 #ifndef COMMONCPP_ADDRESS_H_ 61 #ifndef COMMONCPP_SOCKET_H_ 102 inline Error setKeepAlive(
bool enable)
103 {
return Socket::setKeepAlive(enable);}
121 UDPSocket(
const char *name, Family family = IPV4);
147 {
return Socket::setLoopbackByFamily(enable, family);}
153 {
return Socket::setMulticastByFamily(enable, family);}
159 {
return Socket::setTimeToLiveByFamily(ttl, family);}
185 Socket::Error getInterfaceIndex(
const char *ethX,
int& InterfaceIndex);
196 Socket::Error join(
const IPV4Multicast &ia,
int InterfaceIndex);
205 ssize_t send(
const void *buf,
size_t len);
215 ssize_t receive(
void *buf,
size_t len,
bool reply =
false);
229 {
return getIPV4Peer(port);}
232 IPV6Host getIPV6Peer(tpport_t *port = NULL);
242 inline ssize_t
peek(
void *buf,
size_t len)
243 {return ::recv(so, (
char *)buf, (socksize_t)len, MSG_PEEK);}
248 void setPeer(
const char *service);
249 void connect(
const char *service);
255 Error disconnect(
void);
271 Error setBroadcast(
bool enable)
272 {
return Socket::setBroadcast(enable);}
387 inline ssize_t
send(
const void *buf,
size_t len)
388 {return ::send(so, (
const char *)buf, (socksize_t)len, MSG_NOSIGNAL);}
394 {Socket::endSocket();}
401 inline SOCKET getTransmitter(
void)
404 inline Error setMulticast(
bool enable)
405 {
return Socket::setMulticastByFamily(enable, family);}
407 inline Error setTimeToLive(uint8_t ttl)
408 {
return Socket::setTimeToLiveByFamily(ttl, family);}
420 inline ssize_t
transmit(
const char *buffer,
size_t len)
421 {return ::send(so, buffer, (socksize_t)len, MSG_DONTWAIT|MSG_NOSIGNAL);}
430 return Socket::isPending(Socket::pendingOutput, timeout);
434 inline Error setRouting(
bool enable)
435 {
return Socket::setRouting(enable);}
437 inline Error setTypeOfService(Tos tos)
438 {
return Socket::setTypeOfService(tos);}
440 inline Error setBroadcast(
bool enable)
441 {
return Socket::setBroadcast(enable);}
495 return Socket::isPending(Socket::pendingInput, timeout);
502 {Socket::endSocket();}
504 inline SOCKET getReceiver(
void)
const 507 inline Error setRouting(
bool enable)
508 {
return Socket::setRouting(enable);}
510 inline Error setMulticast(
bool enable)
511 {
return Socket::setMulticastByFamily(enable, family);}
514 {
return Socket::join(ia);}
516 inline Error join(
const IPV4Multicast &ia)
517 {
return Socket::join(ia);}
520 inline Error join(
const IPV6Multicast &ia)
521 {
return Socket::join(ia);}
524 inline Error drop(
const IPV4Multicast &ia)
525 {
return Socket::drop(ia);}
528 inline Error drop(
const IPV6Multicast &ia)
529 {
return Socket::drop(ia);}
541 {return ::recv(so, (
char *)buf, (socksize_t)len, 0);}
550 return Socket::isPending(Socket::pendingInput, timeout);
604 Error disconnect(
void);
bool isPendingReceive(timeout_t timeout)
Check for pending data.
Error setLoopback(bool enable)
Set the loopback.
A specialization of IPV6Address that provides address validation for multicast addresses.
ssize_t send(const void *buf, size_t len)
Transmit "send" to use "connected" send rather than sendto.
bool isOutputReady(unsigned long timeout=0l)
See if output queue is empty for sending more packets.
in_port_t tpport_t
Transport Protocol Ports.
Common C++ generic string class.
Representing half of a two-way UDP connection, the UDP transmitter can broadcast data to another sele...
void endReceiver(void)
End receiver.
Error setMulticast(bool enable)
Set the multicast.
UDP duplex connections impliment a bi-directional point-to-point UDP session between two peer hosts...
bool isInputReady(timeout_t timeout=ucommon::Timer::inf)
See if input queue has data packets available.
ssize_t peek(void *buf, size_t len)
Examine contents of next waiting packet.
The broadcast address object is used to store the broadcast address for a specific subnet...
Network addresses and sockets related classes.
Representing a UDP socket used for subnet broadcasts, this class provides an alternate binding and se...
A generic socket address class.
The network name and address objects are all derived from a common IPV4Address base class...
Representing half of a two-way UDP connection, the UDP receiver can receive data from another peer ho...
Error setTimeToLive(char ttl)
Set time to live.
ssize_t receive(void *buf, size_t len)
Receive a data packet from the connected peer host.
UDP sockets implement the TCP SOCK_DGRAM UDP protocol.
This object is used to hold the actual and valid internet address of a specific host machine that wil...
The network name and address objects are all derived from a common IPV6Address base class...
A specialization of IPV4Address that provides address validation for multicast addresses.
void endTransmitter(void)
Stop transmitter.
ssize_t transmit(const char *buffer, size_t len)
Transmit "send" to use "connected" send rather than sendto.
This object is used to hold the actual and valid internet address of a specific host machine that wil...