Class CClientTCPSocket
Defined in File CClientTCPSocket.h
Inheritance Relationships
Base Type
public mrpt::io::CStream
Class Documentation
-
class CClientTCPSocket : public mrpt::io::CStream
A TCP socket that can be connected to a TCP server, implementing MRPT’s CStream interface for passing objects as well as generic read/write methods. Unless otherwise noticed, operations are blocking.
Note that for convenience, DNS lookup is performed with a timeout (default=3000ms), which can be changed by the static member CClientTCPSocket::DNS_LOOKUP_TIMEOUT_MS
Public Functions
-
~CClientTCPSocket() override
Destructor
-
void connect(const std::string &remotePartAddress, unsigned short remotePartTCPPort, unsigned int timeout_ms = 0)
Establishes a connection with a remote part.
- Parameters:
remotePartAddress – This string can be a host name, like “server” or “www.mydomain.org”, or an IP address “11.22.33.44”.
remotePartTCPPort – The port on the remote machine to connect to.
timeout_ms – The timeout to wait for the connection (0: NO TIMEOUT)
- Throws:
This – method raises an exception if an error is found with a textual description of the error.
-
bool isConnected() const
Returns true if this objects represents a successfully connected socket
-
void close()
Closes the connection
-
void sendString(const std::string &str)
Writes a string to the socket.
- Throws:
std::exception – On communication errors
-
uint64_t Seek(int64_t off, CStream::TSeekOrigin org = sFromBeginning) override
This virtual method has no effect in this implementation over a TCP socket, and its use raises an exception
-
virtual uint64_t getTotalBytesCount() const override
This virtual method has no effect in this implementation over a TCP socket, and its use raises an exception
-
virtual uint64_t getPosition() const override
This virtual method has no effect in this implementation over a TCP socket, and its use raises an exception
-
size_t readAsync(void *Buffer, size_t Count, int timeoutStart_ms = -1, int timeoutBetween_ms = -1)
A method for reading from the socket with an optional timeout.
- Parameters:
Buffer – The destination of data.
Cound – The number of bytes to read.
timeoutStart_ms – The maximum timeout (in milliseconds) to wait for the starting of data from the other side.
timeoutBetween_ms – The maximum timeout (in milliseconds) to wait for a chunk of data after a previous one. Set timeout’s to -1 to block until the desired number of bytes are read, or an error happens.
- Returns:
The number of actually read bytes.
-
size_t writeAsync(const void *Buffer, size_t Count, int timeout_ms = -1)
A method for writing to the socket with optional timeouts. The method supports writing block by block as the socket allows us to write more data.
- Parameters:
Buffer – The data.
Cound – The number of bytes to write.
timeout_ms – The maximum timeout (in milliseconds) to wait for the socket to be available for writing (for each block). Set timeout’s to -1 to block until the desired number of bytes are written, or an error happens.
- Returns:
The number of actually written bytes.
-
template<class MESSAGE>
inline bool sendMessage(const MESSAGE &outMsg, const int timeout_ms = -1) Send a message through the TCP stream.
- Parameters:
outMsg – The message to be shown.
timeout_ms – The maximum timeout (in milliseconds) to wait for the socket in each write operation.
- Template Parameters:
MESSAGE – can be mrpt::serialization::CMessage
- Returns:
Returns false on any error, or true if everything goes fine.
-
template<class MESSAGE>
inline bool receiveMessage(MESSAGE &inMsg, const unsigned int timeoutStart_ms = 100, const unsigned int timeoutBetween_ms = 1000) Waits for an incoming message through the TCP stream.
- Parameters:
inMsg – The received message is placed here.
timeoutStart_ms – The maximum timeout (in milliseconds) to wait for the starting of data from the other side.
timeoutBetween_ms – The maximum timeout (in milliseconds) to wait for a chunk of data after a previous one.
- Template Parameters:
MESSAGE – can be mrpt::serialization::CMessage
- Returns:
Returns false on any error (or timeout), or true if everything goes fine.
-
size_t getReadPendingBytes()
Return the number of bytes already in the receive queue (they can be read without waiting)
-
int setTCPNoDelay(int newValue)
Set the TCP no delay option of the protocol (Nagle algorithm).
- Parameters:
newValue – New value (0 enable Nagle algorithm, 1 disable).
- Returns:
Return a number lower than 0 if any error occurred.
-
int getTCPNoDelay()
Return the value of the TCPNoDelay option.
-
int setSOSendBufffer(int newValue)
Set the size of the SO send buffer. This buffer is used to store data, and is sended when is full.
- Parameters:
newValue – New size of the SO send buffer.
- Returns:
Return a number lower than 0 if any error occurred.
-
int getSOSendBufffer()
Return the current size of the SO send buffer.
Public Static Attributes
-
static unsigned int DNS_LOOKUP_TIMEOUT_MS
See description of CClientTCPSocket
Protected Functions
-
virtual size_t Read(void *Buffer, size_t Count) override
Introduces a virtual method responsible for reading from the stream (This method BLOCKS) This method is implemented as a call to “readAsync” with infinite timeouts.
See also
-
virtual size_t Write(const void *Buffer, size_t Count) override
Introduces a virtual method responsible for writing to the stream. Write attempts to write up to Count bytes to Buffer, and returns the number of bytes actually written. This method is implemented as a call to “writeAsync” with infinite timeouts.
See also
-
std::string getLastErrorStr()
Returns a description of the last Sockets error
-
~CClientTCPSocket() override