ADTF
3.18.2
|
Datagram socket class. More...
Public Member Functions | |
cDatagramSocket () | |
Constructor. | |
virtual | ~cDatagramSocket () |
Destructor. | |
tResult | Open (tInt nPort=0, tUInt32 dwMode=cSocket::OM_Block, tUInt32 ui32InterfaceAddress=0) |
Opens a listening socket. More... | |
tResult | Write (const cString &strDest, tInt nPort, const tVoid *pData, tInt nDataLength, tInt *pnBytesWritten=nullptr) |
Sends a datagram packet. More... | |
tResult | Write (tUInt32 dwDest, tInt nPort, const tVoid *pData, tInt nDataLength, tInt *pnBytesWritten=nullptr) |
Sends a datagram packet. More... | |
tResult | Read (tVoid *pBuffer, tInt nBufferSize, tInt *pnBytesRead=nullptr, tUInt32 *pSenderAddr=nullptr, tUInt16 *pSenderPort=nullptr) |
Read incoming data. More... | |
tResult | EnableBroadcasts (tBool bEnable=tTrue) |
If enabled, the socket will receive packets sent to a broadcast address and will be able to send packets to a broadcast address. More... | |
tResult | JoinMulticastGroup (tUInt32 nGroupAddr) |
Joins a specified multicast group. More... | |
tResult | LeaveMulticastGroup (tUInt32 nGroupAddr) |
Leaves a specified multicast group. More... | |
Public Member Functions inherited from cSocket | |
cSocket () | |
Default constructor. | |
virtual | ~cSocket () |
Default destructor. | |
tVoid | Close () |
Closes the socket and frees all resources. More... | |
tVoid | Close (tShutdownMode nHow) |
Closes the socket and frees all resources. More... | |
tUInt32 | GetAddress () const |
Retrieves the IP address of the socket. More... | |
tInt | GetPort () const |
Retrieves the port of the socket. More... | |
tSocketHandle | GetHandle () const |
Get the internal socket handle. More... | |
tBool | SetTimeout (tTimeStamp nReadTimeout=-1, tTimeStamp nWriteTimeout=-1) |
Sets timouts fo the read and write socket operations. More... | |
virtual tBool | IsConnected (tTimeStamp nTimeout=0) |
Polls the socket for its connection state. More... | |
tBool | DataAvailable () |
Check if data is available for reading (a subsequent read succeed immediately). More... | |
tBool | WaitForData (tTimeStamp nTimeout=-1) |
Blocks the current process until data is available for reading. More... | |
tInt | SetOption (tInt nLevel, tInt nOptionId, const tVoid *pValue, tInt nValueLen) |
Sets a specific option for the socket. More... | |
tInt | SetOption (cSocket::tOptionLevel eLevel, cSocket::tOptionId eId, const tVoid *pValue, tInt nValueLen) |
Equivalent to SetOption (tInt, tInt, const tVoid*, tInt) Instead of the system specific constants (e.g. More... | |
tResult | GetOption (tInt nLevel, tInt nOptionId, tVoid *o_pValue, tInt *o_pValueLen) |
gets a specific option for the socket. More... | |
tResult | GetOption (cSocket::tOptionLevel eLevel, cSocket::tOptionId eId, tVoid *o_pValue, tInt *o_pValueLen) |
Equivalent with GetOption(tInt, tInt, tVoid*, tInt*). More... | |
Additional Inherited Members | |
Public Types inherited from cSocket | |
enum | tOpenMode { OM_Block = 0x0 , OM_NonBlock = 0x01 } |
The mode in which to run the sockets during and after a connection. More... | |
enum | tShutdownMode { SM_Read = 0 , SM_Write = 1 , SM_ReadWrite = 2 } |
The mode in which to switch the sockets to on shutdown. More... | |
enum | tOptionLevel { OL_SOCKET = 1 , OL_IPPROTO_TCP = 2 , OL_IPPROTO_IP = 3 } |
Abstraction of the system specific socket option levels (e.g. More... | |
enum | tOptionId { OI_DEBUG , OI_BROADCAST , OI_REUSEADDR , OI_KEEPALIVE , OI_LINGER , OI_SNDBUF , OI_RCVBUF , OI_DONTROUTE , OI_TCP_NODELAY , OI_IP_MULTICAST_LOOP } |
Abstraction of the system specific socket options (e.g. More... | |
Static Public Member Functions inherited from cSocket | |
static tVoid | AddLibraryRef () |
for the work with the static methods you have to use this function to load the nessessary libs, after work ReleaseLibraryRef has to be called. | |
static tVoid | ReleaseLibraryRef () |
to correctly unload the socket-libs you have to call this function | |
static cString | GetHostName (tUInt32 dwHostAddress=0) |
Returns the hostname for a given address. More... | |
static tUInt32 | GetHostAddress (const cString &strHostName=cString()) |
Returns the address for a given hostname. More... | |
static tUInt32 | AddressToUInt32 (const cString &strAddress) |
Converts a aaa.bbb.ccc.ddd formated address string to an integer. More... | |
static cString | UInt32ToAddress (tUInt32 ui32Address) |
Converts an integer to an aaa.bbb.ccc.ddd formated address string. More... | |
static tInt | GetLastErrorCode () |
Gets the error code of the last failure. More... | |
static tResult | GetLocalAddresses (std::set< tUInt32, std::less< tUInt32 >, std::allocator< tUInt32 > > &oAddresses) |
Returns a list of addresses from all local interfaces. More... | |
static tResult | SocketError (tInt nSocketError) |
Maps a socket error to an A_UTILS error. More... | |
static tResult | FindInterfaceForAddress (tUInt32 ui32FarAddress, tUInt32 &ui32LocalAddress) |
If more than one network interface is used in the host the FindInterfaceForAddress finds out the local address of the interface where the far address is reachable. More... | |
static tResult | WaitForData (const std::list< cSocket * > &i_lstSockets, cSocket **o_ppSocket, tTimeStamp tmTimeOut=-1) |
Blocks the current thread until data are available for reading in at least one of i_lstSockets . More... | |
Static Public Attributes inherited from cSocket | |
static const tUInt32 | SOCKET_NO_ADDRESS |
Constance for check No Address. | |
Protected Member Functions inherited from cSocket | |
tBool | Initialize () |
Sets the params for the socket with 0/nullptr. More... | |
tInt | ResolveOptionLevel (tOptionLevel level) const |
Resolve the option value of the socket. More... | |
tInt | ResolveOptionId (tOptionId id) const |
Resolve the option id of the socket. More... | |
Protected Attributes inherited from cSocket | |
tSocketHandle | m_hSocket |
this is internal handle of the socket, only use it if you really need that!! | |
tUInt32 | m_ui32Address |
Address of the socket (valid only if opened) | |
tInt | m_nPort |
Port of the socket (valid only if opened) | |
Datagram socket class.
Definition at line 28 of file datagramsocket.h.
If enabled, the socket will receive packets sent to a broadcast address and will be able to send packets to a broadcast address.
[in] | bEnable | Whether to enable broadcasts or not. |
ERR_INVALID_HANDLE | The descriptor is not valid (EBADF ). |
ERR_MEMORY | The option value is not in a valid part of the process address space (EFAULT ). |
ERR_INVALID_FLAGS | The option length is invalid (EINVAL ). |
ERR_UNKNOWN | The option is unknown at the indicated level (ENOPROTOOPT ). |
The | descriptor does not refer to a socket (ENOTSOCK ). |
Joins a specified multicast group.
IP of a MulticastGroup is between 224.0.0.1 and 239.255.255.255 .
nGroupAddr | The multicast address of the group. |
ERR_INVALID_HANDLE | The descriptor is not valid (EBADF ). |
ERR_MEMORY | The option value is not in a valid part of the process address space (EFAULT ). |
ERR_INVALID_FLAGS | The option length is invalid (EINVAL ). |
ERR_UNKNOWN | The option is unknown at the indicated level (ENOPROTOOPT ). |
The | descriptor does not refer to a socket (ENOTSOCK ). |
Leaves a specified multicast group.
nGroupAddr | The multicast address of the group. |
ERR_INVALID_HANDLE | The descriptor is not valid (EBADF ). |
ERR_MEMORY | The option value is not in a valid part of the process address space (EFAULT ). |
ERR_INVALID_FLAGS | The option length is invalid (EINVAL ). |
ERR_UNKNOWN | The option is unknown at the indicated level (ENOPROTOOPT ). |
The | descriptor does not refer to a socket (ENOTSOCK ). |
tResult Open | ( | tInt | nPort = 0 , |
tUInt32 | dwMode = cSocket::OM_Block , |
||
tUInt32 | ui32InterfaceAddress = 0 |
||
) |
Opens a listening socket.
nPort | The port on which to listen for data. |
dwMode | The mode in which to drive the socket instance (blocking or non-blocking mode, see tOpenMode). |
ui32InterfaceAddress | The interface to bind to (network byte order). If 0 any address will be used. |
ERR_INVALID_ARG | Illegal port number committed |
ERR_ACCESS_DENIED | Permission to create a socket of the specified type and/or protocol is denied (EACCES ). |
ERR_NOT_SUPPORTED | The implementation does not support the specified address family or the protocol type or the specified protocol is not supported within this domain (EAFNOSUPPORT or EPROTONOSUPPORT ). |
ERR_INVALID_FLAGS | Unknown protocol or protocol family not available (EINVAL ). |
ERR_MEMORY | Process file table overflow or the system limit on the total number of open files has been reached or insufficient memory is available (EMFILE or ENFILE or ENOBUFS or ENOMEM ). |
ERR_OPEN_FAILED | Other error detected |
ERR_RESOURCE_IN_USE | Could not set socket options |
ERR_TIMEOUT | A connection could not be established immediately. (Non-blocking only!) |
tResult Read | ( | tVoid * | pBuffer, |
tInt | nBufferSize, | ||
tInt * | pnBytesRead = nullptr , |
||
tUInt32 * | pSenderAddr = nullptr , |
||
tUInt16 * | pSenderPort = nullptr |
||
) |
Read incoming data.
pBuffer | The buffer where the data should be stored. |
nBufferSize | The size of the buffer. |
pnBytesRead | If specified, this value is filled with the actual amount of bytes copied into the buffer. |
pSenderAddr | If specified, this will be filled with the senders address. |
pSenderPort | If specified, this will be filled with the senders port. |
ERR_POINTER | Null-pointer committed |
ERR_INVALID_ARG | Negative buffer size committed |
ERR_TIMEOUT | The socket is marked non-blocking and the receive operation would block or a receive timeout expored before data was received (EAGAIN or EWOULDBLOCK ). |
ERR_INVALID_HANDLE | An invalid descriptor was specified (EBADF ). |
ERR_ACCESS_DENIED | A remote host refused to allow the network connection (ECONNREFUSED ). |
ERR_MEMORY | The receive buffer pointer(s) point outside the process's address space or no memory could be allocated (EFAULT or ENOMEM ). |
ERR_CANCELED | The receive was interrupted by delivery of a signal before any data were available (EINTR ). |
ERR_INVALID_FLAGS | Invalid argument passed (EINVAL ). |
ERR_BAD_DEVICE | The descriptor does not refer to a socket (ENOTSOCK ). |
ERR_DEVICE_IO | Other error detected |
tResult Write | ( | const cString & | strDest, |
tInt | nPort, | ||
const tVoid * | pData, | ||
tInt | nDataLength, | ||
tInt * | pnBytesWritten = nullptr |
||
) |
Sends a datagram packet.
strDest | The destination address. |
nPort | The destination port. |
pData | The data which is to be sent. |
nDataLength | The size of the data. |
pnBytesWritten | If specified, this value is filled with the actual amount of bytes sent. |
ERR_POINTER | Null-pointer committed |
ERR_INVALID_ARG | Negative data length committed |
ERR_INVALID_ADDRESS | Host resolving failed |
ERR_ACCESS_DENIED | Write permission is denied on the destination socket file (EACCES ). |
ERR_TIMEOUT | The socket is marked non-blocking and the requested operation would block (EAGAIN or EWOULDBLOCK ). In normal mode, this simply implies write operation that has not returned immediately. |
ERR_INVALID_HANDLE | An invalid descriptor was specified (EBADF ). |
ERR_CANCELED | Connection reset by peer or a signal occurred before any data was transmitted (ECONNRESET or EINTR ). |
ERR_INVALID_ADDRESS | No peer address is set (EDESTADDRREQ ). |
ERR_MEMORY | An invalid user space address was specified for a parameter or the size of the message to be sent made automatic sending impossible or the output queue for a network interface was full or no memory available (EFAULT or EMSGSIZE or ENOBUFS or ENOMEM ). |
ERR_INVALID_FLAGS | Invalid argument passed or some bit in the flags is inappropriate for the socket type (EINVAL or EOPNOTSUPP ). |
ERR_NOT_CONNECTED | The socket is not connected (ENOTCONN ). |
ERR_BAD_DEVICE | The descriptor does not refer to a socket (ENOTSOCK ). |
ERR_DEVICE_IO | Other error detected |
tResult Write | ( | tUInt32 | dwDest, |
tInt | nPort, | ||
const tVoid * | pData, | ||
tInt | nDataLength, | ||
tInt * | pnBytesWritten = nullptr |
||
) |
Sends a datagram packet.
dwDest | The destination address. |
nPort | The destination port. |
pData | The data which is to be sent. |
nDataLength | The size of the data. |
pnBytesWritten | If specified, this value is filled with the actual amount of bytes sent. |
ERR_POINTER | Null-pointer committed |
ERR_INVALID_ARG | Negative data length committed |
ERR_INVALID_ADDRESS | Host resolving failed |
ERR_ACCESS_DENIED | Write permission is denied on the destination socket file (EACCES ). |
ERR_TIMEOUT | The socket is marked non-blocking and the requested operation would block (EAGAIN or EWOULDBLOCK ). In normal mode, this simply yields a write timeout. |
ERR_INVALID_HANDLE | An invalid descriptor was specified (EBADF ). |
ERR_CANCELED | Connection reset by peer or a signal occurred before any data was transmitted (ECONNRESET or EINTR ). |
ERR_INVALID_ADDRESS | No peer address is set (EDESTADDRREQ ). |
ERR_MEMORY | An invalid user space address was specified for a parameter or the size of the message to be sent made automatic sending impossible or the output queue for a network interface was full or no memory available (EFAULT or EMSGSIZE or ENOBUFS or ENOMEM ). |
ERR_INVALID_FLAGS | Invalid argument passed or some bit in the flags is inappropriate for the socket type (EINVAL or EOPNOTSUPP ). |
ERR_NOT_CONNECTED | The socket is not connected (ENOTCONN ). |
ERR_BAD_DEVICE | The descriptor does not refer to a socket (ENOTSOCK ). |
ERR_DEVICE_IO | Other error detected |