C12Adapter Opensource C++ Interface
|
UDP datagram socket. More...
Public Types | |
enum | { MAXIMUM_DATAGRAM_SIZE = 1500 } |
![]() | |
typedef int | SocketHandleType |
![]() | |
enum | OpenFlags { FlagReadOnly = 0x0001, FlagWriteOnly = 0x0002, FlagReadWrite = 0x0003, FlagText = 0x00010, FlagBuffered = 0x0020 } |
Flags that set modes of stream manipulation. More... | |
Public Member Functions | |
MStreamSocketUdp (SocketHandleType socketHandle=InvalidSocket) | |
Constructor that creates socket based on existing socket handle. More... | |
virtual | ~MStreamSocketUdp () |
Destructor, destroys the socket object and never throws an exception. More... | |
virtual MStdString | GetName () const |
Return a representative name of a socket stream. More... | |
virtual MStdString | GetPeerSocketName () const |
Get the IP address for the peer socket. More... | |
virtual unsigned | GetPeerSocketPort () const |
Get the port for the peer socket. More... | |
void | Connect (unsigned port, const MStdString &address) |
Create client socket that connects to the server. More... | |
virtual void | ClearInputBuffer () |
Clear the input buffer by reading all the available data from the socket, if any are there. More... | |
virtual unsigned | GetBytesReadyToRead () const |
The number of bytes in the receive buffer that can be read immediately. More... | |
unsigned | RecvFrom (char *buffer, unsigned length, int flags, sockaddr *addr, socklen_t *addrLength) |
Analog of the standard socket datagram function recvfrom. More... | |
unsigned | SendTo (const char *buffer, unsigned length, int flags, const sockaddr *addr, socklen_t addrLength) |
Send the buffer as the socket datagram, standard socket function sendto. More... | |
unsigned | Recv (char *buffer, unsigned length, int flags) |
Analog of the standard socket function recv, uses internal address. More... | |
unsigned | Send (const char *buffer, unsigned length, int flags) |
Send the buffer through the socket datagram, uses the internal address. More... | |
void | Swap (MStreamSocketUdp &other) |
Swap this UDP socket and the given socket by exchanging their handles and other properties. More... | |
![]() | |
MStdString | GetLocalSocketName () const |
Get the local name for this socket. More... | |
unsigned | GetLocalSocketPort () const |
Get the local port for a socket. More... | |
void | Bind (unsigned port, const MStdString &address=MVariant::s_emptyString) |
Bind a server socket. More... | |
bool | WaitToReceive (unsigned timeout=(unsigned) TimeoutInfinite) const |
Waits the time given in milliseconds for the input data to arrive. More... | |
bool | WaitToSend (unsigned timeout=(unsigned) TimeoutInfinite) const |
Waits the time given in milliseconds for the output buffer to become not full. More... | |
bool | IsInputBufferEmpty () const |
Whether the input buffer has any data. More... | |
int | GetSockOpt (int level, int option) |
Get socket option as integer, access to the standard socket call. More... | |
MByteString | GetSockOptBytes (int level, int option, unsigned bufferSize) |
Get socket option as byte string, access to the standard socket call. More... | |
void | SetSockOpt (int level, int option, const MVariant &value) |
Set socket option, access to the standard socket call. More... | |
SocketHandleType | GetSocketHandle () const |
void | SetSocketHandle (SocketHandleType) |
unsigned | GetReceiveTimeout () const |
void | SetReceiveTimeout (unsigned milliseconds) |
![]() | |
virtual | ~MStream () |
Closes the stream and destroys the object. More... | |
bool | IsOpen () const |
Whether the stream object is successfully open. More... | |
unsigned | GetFlags () const |
Return flags associated with stream. More... | |
MByteString | Read (unsigned count) |
Reads a byte string of a given length from the stream. More... | |
MByteString | ReadAvailable (unsigned count) |
Reads a byte string up to a given length from the stream. More... | |
MByteString | ReadAll () |
Reads all bytes available in stream. More... | |
void | ReadBytes (char *buffer, unsigned count) |
Reads a byte buffer of a given length from the stream. More... | |
unsigned | ReadAvailableBytes (char *buffer, unsigned count) |
Reads a byte buffer up to a given length from the stream. More... | |
MVariant | ReadLine () |
Read one line from text file. More... | |
bool | ReadOneLine (MStdString &line) |
Read one line from text file, return false at end of file. More... | |
MStdStringVector | ReadAllLines () |
Read all lines from text file. More... | |
void | Skip (unsigned count) |
Skips over and discards specified number of bytes of data from this stream. More... | |
void | WriteByte (Muint8 byte) |
Writes a byte to the current position in the stream and advances the position by one byte. More... | |
void | WriteChar (char c) |
Writes a char to the current position in the stream and advances the position by one byte. More... | |
void | Write (const MByteString &bytes) |
Writes a given byte string to the current position in the stream and advances the position. More... | |
void | WriteBytes (const char *bytes, unsigned count) |
Writes a given byte buffer to the current position in the stream and advances the position. More... | |
void | WriteChars (const char *chars) |
Writes a given zero terminated character string to the current position in the stream and advances the position. More... | |
void | WriteLine (const MStdString &str) |
Write a line into file. More... | |
void | WriteAllLines (const MStdStringVector &lines) |
Write given lines into file. More... | |
void | WriteFormat (MConstChars format,...) |
Write a formatted string into a file. More... | |
void | WriteFormatVA (MConstChars format, va_list args) |
Write a formatted string into a file using va_list. More... | |
void | Flush () |
Causes any buffered data to be written into stream. More... | |
void | Close () |
Flushes and closes the current stream and releases any resources. More... | |
MStdString | GetKey () const |
void | SetKey (const MStdString &) |
unsigned | GetPosition () const |
void | SetPosition (unsigned) |
unsigned | GetSize () const |
void | SetSize (unsigned) |
MVariant | ReadByte () |
![]() | |
virtual | ~MObject () |
Object destructor. | |
virtual const MClass * | GetClass () const =0 |
Get the final class of the object. More... | |
virtual unsigned | GetEmbeddedSizeof () const |
For embedded object types, return the size of the class. More... | |
bool | IsEmbeddedObject () const |
Tell if the object is of embedded kind. More... | |
SHOW_INTERNAL MVariant | Call (const MStdString &name, const MVariant ¶ms) |
Call the object service with parameters, given as variant. More... | |
MVariant | Call0 (const MStdString &name) |
Call the object service with no parameters. More... | |
MVariant | Call1 (const MStdString &name, const MVariant &p1) |
Call the object service with one parameter. More... | |
MVariant | Call2 (const MStdString &name, const MVariant &p1, const MVariant &p2) |
Call the object service with two parameter. More... | |
MVariant | Call3 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3) |
Call the object service with three parameter. More... | |
MVariant | Call4 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4) |
Call the object service with four parameter. More... | |
MVariant | Call5 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5) |
Call the object service with five parameter. More... | |
MVariant | Call6 (const MStdString &name, const MVariant &p1, const MVariant &p2, const MVariant &p3, const MVariant &p4, const MVariant &p5, const MVariant &p6) |
Call the object service with six parameter. More... | |
virtual MVariant | CallV (const MStdString &name, const MVariant::VariantVector ¶ms) |
Call the object service with parameters, given as variant vector. More... | |
virtual bool | IsPropertyPresent (const MStdString &name) const |
Tell if the property with the given name exists. | |
virtual bool | IsServicePresent (const MStdString &name) const |
Tell if the service with the given name exists. | |
virtual MVariant | GetProperty (const MStdString &name) const |
Get the property value using name of the property. More... | |
virtual void | SetProperty (const MStdString &name, const MVariant &value) |
Set the property using name of the property, and value. More... | |
virtual MStdStringVector | GetAllPropertyNames () const |
Return the list of publicly available properties, persistent or not. More... | |
virtual MStdStringVector | GetAllPersistentPropertyNames () const |
Return the list of persistent properties. More... | |
virtual void | SetPersistentPropertiesToDefault () |
Set the persistent properties of the object to their default values. More... | |
virtual MVariant | GetPersistentPropertyDefaultValue (const MStdString &name) const |
Get the default value of persistent property with the name given. More... | |
virtual void | SetPersistentPropertyToDefault (const MStdString &name) |
Set the persistent property with the name given to default value. More... | |
virtual const char * | GetType () const |
Get the name of the type for the object (could be the same as class name). | |
virtual void | SetType (const MStdString &) |
Intentionally, it will set the name of the type for the object, but the service will not allow setting the name to anything other than the current name. More... | |
virtual void | Validate () |
Validate internal structures of the object. More... | |
Additional Inherited Members | |
![]() | |
static MStdString | GetLocalName () |
Returns the standard host name for the local machine. More... | |
static MStdString | GetLocalAddress () |
Returns the host address for the local machine. More... | |
static MByteString | AddressToBinary (const MStdString &addr) |
Convert a string with IPv4 or IPv6 IP address into a binary form. More... | |
static MStdString | BinaryToAddress (const MByteString &addr) |
Convert a binary form of IPv4 or IPv6 address into a string. More... | |
static bool | IsAddressLocalIPv4 (const MStdString &address) |
True if the given string represents an IPv4 address. More... | |
static bool | IsAddressLocalIPv6 (const MStdString &address) |
True if the given string represents an IPv6 address. More... | |
![]() | |
static const MClass * | GetStaticClass () |
Get the declared class of this particular object. More... | |
static bool | IsClassPresent (const MStdString &name) |
Tells if the given class name is available. More... | |
![]() | |
static const SocketHandleType | InvalidSocket = (SocketHandleType)(~0) |
Value of socket handle that corresponds to uninitialized or invalid socket. | |
static const int | SocketErrorStatus = -1 |
Return value that corresponds to uninitialized or invalid socket. | |
static const unsigned | TimeoutInfinite = (unsigned)-1 |
Timeout that represents infinity. More... | |
static const unsigned | TimeoutDefault = 60000 |
Default socket read timeout in milliseconds. More... | |
![]() | |
static const MClass | s_class |
Class of MObject. | |
![]() | |
MStreamSocketBase (SocketHandleType socketHandle=InvalidSocket) | |
Constructor that creates socket based on the existing socket handle. More... | |
virtual | ~MStreamSocketBase () |
Destructor, destroys the socket object and never throws an exception. More... | |
![]() | |
MStream () | |
Default constructor, called from children of stream. | |
![]() | |
MObject () | |
Object constructor, protected as the class is abstract. | |
void | DoSetPersistentPropertiesToDefault (const MClass *staticClass) |
Set the persistent properties to their default values for one object provided the class for that object. More... | |
UDP datagram socket.
The services below can throw MESocketError in the event of an erroneous socket operation.
anonymous enum |
Enumerator | |
---|---|
MAXIMUM_DATAGRAM_SIZE |
Maximum practical size of UDP datagram. The theoretical UDP datagram size is 65,535 according to https://en.wikipedia.org/wiki/User_Datagram_Protocol. However, such size is not practical as UDP size is typically selected to be smaller than MTU (maximum transfed unit of the media). According to http://stackoverflow.com/questions/1098897/what-is-the-largest-safe-udp-packet-size-on-the-internet the value 1500 is a good practical maximum, while in reality the size is even smaller to make sure the packet is never reassembled. |
|
explicit |
Constructor that creates socket based on existing socket handle.
This is a C++ only method that is convenient for cases when the socket is open by any means other than the socket stream object.
socketHandle | Handle to use by the socket. When handle is an invalid socket value, or not present, the socket will not be opened. |
|
virtual |
Destructor, destroys the socket object and never throws an exception.
Use Close if there is a need to report any socket related exceptions.
|
virtual |
Clear the input buffer by reading all the available data from the socket, if any are there.
Implements MStreamSocketBase.
void MStreamSocketUdp::Connect | ( | unsigned | port, |
const MStdString & | address | ||
) |
Create client socket that connects to the server.
port | Port to which to connect. |
address | IP address or a DNS name of the server to which the connection has to be made. |
|
virtual |
The number of bytes in the receive buffer that can be read immediately.
Returns the number of bytes ready to be read from socket.
Implements MStreamSocketBase.
|
virtual |
Return a representative name of a socket stream.
This method overwrites the parent implementation and gives descriptive information about the socket. For example, it can return client host name or IP address, and its port number. The particular information is not guaranteed to have the same format.
Implements MStream.
|
virtual |
Get the IP address for the peer socket.
The IP address returned has text representation, such as "10.0.0.120".
Implements MStreamSocketBase.
|
virtual |
Get the port for the peer socket.
Implements MStreamSocketBase.
unsigned MStreamSocketUdp::Recv | ( | char * | buffer, |
unsigned | length, | ||
int | flags | ||
) |
Analog of the standard socket function recv, uses internal address.
buffer | Buffer into which to receive the data. |
length | Length of the buffer or how many bytes to read. |
flags | Standard recv flags. |
unsigned MStreamSocketUdp::RecvFrom | ( | char * | buffer, |
unsigned | length, | ||
int | flags, | ||
sockaddr * | addr, | ||
socklen_t * | addrLength | ||
) |
Analog of the standard socket datagram function recvfrom.
Receive a datagram currently available in the socket.
buffer | Buffer into which to receive the data. |
length | Length of the buffer or how many bytes to read. |
flags | Standard recv flags. |
addr | Address information, big enough to hold any address. This is typically sockaddr_storage. |
addrLength | Returned length of the address information. |
unsigned MStreamSocketUdp::Send | ( | const char * | buffer, |
unsigned | length, | ||
int | flags | ||
) |
Send the buffer through the socket datagram, uses the internal address.
buffer | Buffer, which shall be written to socket. |
length | Length of the buffer to write. |
flags | Standard send flags. |
unsigned MStreamSocketUdp::SendTo | ( | const char * | buffer, |
unsigned | length, | ||
int | flags, | ||
const sockaddr * | addr, | ||
socklen_t | addrLength | ||
) |
Send the buffer as the socket datagram, standard socket function sendto.
buffer | Buffer, which shall be written to socket. |
length | Length of the buffer to write. |
flags | Standard send flags. |
addr | Address information, big enough to hold any address. This is typically sockaddr_storage. |
addrLength | Returned length of the address information. |
void MStreamSocketUdp::Swap | ( | MStreamSocketUdp & | other | ) |
Swap this UDP socket and the given socket by exchanging their handles and other properties.
After the successful completion, this socket and other socket will be exchanged.