MRPT
1.9.9
|
Communication utilities: serial ports, networking (TCP, DNS,...), pub/sub nodelets.
Back to list of all libraries | See all modules
[New in MRPT 2.0.0]
This C++ library is part of MRPT and can be installed in Debian-based systems with:
sudo apt install libmrpt-comms-dev
See: Using MRPT from your CMake project
Find below some examples of use.
MRPT provides a Publisher/Subscriber (Pub/Sub) pattern implementation for intra-process (multiple threads) zero-copy super fast communication.
Thread creation and handling is the responsibility of the user.
The main concepts are:
topic
: the name of a shared variable. If you are familiar with ROS, you already know what a topic is. Topics are identified by unique strings, e.g. odometry
, scan
.All these concepts are illustrated in the example below. Note that different subscribers are created: with a lambda, with a regular function, a std::bind(), etc.
See: comms_nodelets_example/NodeletsTest_impl.cpp
mrpt::comms::net::http_get() is an easy way to GET an HTTP resource from any C++ program. You can also use mrpt::comms::net::http_request() to access APIs requiring the POST method.
See: comms_http_client/test.cpp
Classes | |
class | mrpt::comms::CClientTCPSocket |
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. More... | |
struct | mrpt::comms::TFTDIDevice |
A list of FTDI devices and their descriptors. More... | |
class | mrpt::comms::CInterfaceFTDI |
A definition of a CStream actually representing a USB connection to a FTDI chip. More... | |
class | mrpt::comms::CSerialPort |
A communications serial port built as an implementation of a utils::CStream. More... | |
class | mrpt::comms::CServerTCPSocket |
A TCP socket that can be wait for client connections to enter. More... | |
class | mrpt::comms::Subscriber |
Nodelet-like Pub/Sub communications (in #include <mrpt/comms/nodelets.h>) More... | |
Namespaces | |
mrpt::comms::net | |
A set of useful routines for networking. | |
Enumerations | |
enum | mrpt::comms::net::ERRORCODE_HTTP { mrpt::comms::net::erOk = 0, mrpt::comms::net::erBadURL, mrpt::comms::net::erCouldntConnect, mrpt::comms::net::erNotFound, mrpt::comms::net::erOtherHTTPError } |
Possible returns from a HTTP request. More... | |
Functions | |
ERRORCODE_HTTP | mrpt::comms::net::http_get (const string &url, std::vector< uint8_t > &out_content, string &out_errormsg, int port=80, const string &auth_user=string(), const string &auth_pass=string(), int *out_http_responsecode=nullptr, mrpt::system::TParameters< string > *extra_headers=nullptr, mrpt::system::TParameters< string > *out_headers=nullptr, int timeout_ms=1000) |
Perform an HTTP GET operation (version for retrieving the data as a std::vector<uint8_t>) More... | |
ERRORCODE_HTTP | mrpt::comms::net::http_get (const string &url, string &out_content, string &out_errormsg, int port=80, const string &auth_user=string(), const string &auth_pass=string(), int *out_http_responsecode=nullptr, mrpt::system::TParameters< string > *extra_headers=nullptr, mrpt::system::TParameters< string > *out_headers=nullptr, int timeout_ms=1000) |
Perform an HTTP GET operation (version for retrieving the data as text) More... | |
ERRORCODE_HTTP | mrpt::comms::net::http_request (const string &http_method, const string &http_send_content, const string &url, std::vector< uint8_t > &out_content, string &out_errormsg, int port=80, const string &auth_user=string(), const string &auth_pass=string(), int *out_http_responsecode=nullptr, mrpt::system::TParameters< string > *extra_headers=nullptr, mrpt::system::TParameters< string > *out_headers=nullptr, int timeout_ms=1000) |
Generic function for HTTP GET & POST methods. More... | |
bool | mrpt::comms::net::DNS_resolve_async (const std::string &server_name, std::string &out_ip, const unsigned int timeout_ms=3000) |
Resolve a server address by its name, returning its IP address as a string - This method has a timeout for the maximum time to wait for the DNS server. More... | |
std::string | mrpt::comms::net::getLastSocketErrorStr () |
Returns a description of the last Sockets error. More... | |
bool | mrpt::comms::net::Ping (const std::string &address, const int max_attempts, std::string *output_str=nullptr) |
Ping an IP address. More... | |
Possible returns from a HTTP request.
Enumerator | |
---|---|
erOk | |
erBadURL | |
erCouldntConnect | |
erNotFound | |
erOtherHTTPError |
Definition at line 31 of file net_utils.h.
bool mrpt::comms::net::DNS_resolve_async | ( | const std::string & | server_name, |
std::string & | out_ip, | ||
const unsigned int | timeout_ms = 3000 |
||
) |
Resolve a server address by its name, returning its IP address as a string - This method has a timeout for the maximum time to wait for the DNS server.
For example: server_name="www.google.com" -> out_ip="209.85.227.99"
Definition at line 404 of file net_utils.cpp.
References mrpt::system::os::memcpy().
Referenced by mrpt::comms::CClientTCPSocket::connect().
std::string mrpt::comms::net::getLastSocketErrorStr | ( | ) |
Returns a description of the last Sockets error.
Definition at line 480 of file net_utils.cpp.
References mrpt::format().
Referenced by mrpt::comms::CServerTCPSocket::getLastErrorStr(), mrpt::comms::CClientTCPSocket::getLastErrorStr(), mrpt::hwdrivers::CVelodyneScanner::initialize(), and mrpt::hwdrivers::CVelodyneScanner::internal_receive_UDP_packet().
ERRORCODE_HTTP mrpt::comms::net::http_get | ( | const string & | url, |
std::vector< uint8_t > & | out_content, | ||
string & | out_errormsg, | ||
int | port = 80 , |
||
const string & | auth_user = string() , |
||
const string & | auth_pass = string() , |
||
int * | out_http_responsecode = nullptr , |
||
mrpt::system::TParameters< string > * | extra_headers = nullptr , |
||
mrpt::system::TParameters< string > * | out_headers = nullptr , |
||
int | timeout_ms = 1000 |
||
) |
Perform an HTTP GET operation (version for retrieving the data as a std::vector<uint8_t>)
url | Must be a simple string of the form "http://<servername>/<relative-address>". |
port | The server port, if different from 80. |
extra_headers | If provided, the given extra HTTP headers will be sent. |
out_errormsg | On exit will contain a description of the error or "Ok". |
out_content | The buffer with the retrieved data. |
out_http_responsecode | If provided, will hold the HTTP code, eg: 200, 404... |
out_headers | If provided, a copy of all the headers returned by the server will be saved here. |
auth_user | Send a basic HTTP authorization request with the given user & password. |
auth_pass | Send a basic HTTP authorization request with the given user & password. |
Definition at line 386 of file net_utils.cpp.
References mrpt::comms::net::http_request(), and url.
Referenced by mrpt::hwdrivers::CRovio::captureImageAsync(), mrpt::hwdrivers::CRovio::general_command(), mrpt::comms::net::http_get(), mrpt::hwdrivers::CRovio::initialize(), mrpt::hwdrivers::CRovio::path_management(), mrpt::hwdrivers::CRovio::pathRename(), mrpt::hwdrivers::CNTRIPClient::retrieveListOfMountpoints(), and mrpt::hwdrivers::CRovio::send_cmd_action().
ERRORCODE_HTTP mrpt::comms::net::http_get | ( | const string & | url, |
string & | out_content, | ||
string & | out_errormsg, | ||
int | port = 80 , |
||
const string & | auth_user = string() , |
||
const string & | auth_pass = string() , |
||
int * | out_http_responsecode = nullptr , |
||
mrpt::system::TParameters< string > * | extra_headers = nullptr , |
||
mrpt::system::TParameters< string > * | out_headers = nullptr , |
||
int | timeout_ms = 1000 |
||
) |
Perform an HTTP GET operation (version for retrieving the data as text)
url | Must be a simple string of the form "http://<servername>/<relative-address>". |
port | The server port, if different from 80. |
extra_headers | If provided, the given extra HTTP headers will be sent. |
out_errormsg | On exit will contain a description of the error or "Ok". |
out_content | The buffer with the retrieved data. |
out_http_responsecode | If provided, will hold the HTTP code, eg: 200, 404... |
out_headers | If provided, a copy of all the headers returned by the server will be saved here. |
auth_user | Send a basic HTTP authorization request with the given user & password. |
auth_pass | Send a basic HTTP authorization request with the given user & password. |
Definition at line 51 of file net_utils.cpp.
References mrpt::opengl::internal::data, mrpt::comms::net::http_get(), mrpt::system::os::memcpy(), and url.
ERRORCODE_HTTP mrpt::comms::net::http_request | ( | const string & | http_method, |
const string & | http_send_content, | ||
const string & | url, | ||
std::vector< uint8_t > & | out_content, | ||
string & | out_errormsg, | ||
int | port = 80 , |
||
const string & | auth_user = string() , |
||
const string & | auth_pass = string() , |
||
int * | out_http_responsecode = nullptr , |
||
mrpt::system::TParameters< string > * | extra_headers = nullptr , |
||
mrpt::system::TParameters< string > * | out_headers = nullptr , |
||
int | timeout_ms = 1000 |
||
) |
Generic function for HTTP GET & POST methods.
Definition at line 69 of file net_utils.cpp.
References mrpt::system::TParameters< T >::begin(), mrpt::system::TParameters< T >::clear(), mrpt::comms::CClientTCPSocket::connect(), mrpt::system::encodeBase64(), mrpt::system::TParameters< T >::end(), mrpt::comms::net::erBadURL, mrpt::comms::net::erCouldntConnect, mrpt::comms::net::erOk, mrpt::comms::net::erOtherHTTPError, mrpt::system::TParameters< T >::find(), mrpt::format(), mrpt::system::TParameters< T >::has(), mrpt::comms::CClientTCPSocket::isConnected(), mrpt::system::os::memcpy(), mrpt::comms::CClientTCPSocket::readAsync(), mrpt::comms::CClientTCPSocket::sendString(), mrpt::system::CTicTac::Tac(), mrpt::system::CTicTac::Tic(), mrpt::system::tokenize(), url, and val.
Referenced by mrpt::comms::net::http_get(), and mrpt::hwdrivers::CVelodyneScanner::internal_send_http_post().
bool mrpt::comms::net::Ping | ( | const std::string & | address, |
const int | max_attempts, | ||
std::string * | output_str = nullptr |
||
) |
Ping an IP address.
[in] | address | Address to ping. |
[in] | max_attempts | Number of attempts to try and ping. |
[out] | output | String containing output information |
Definition at line 498 of file net_utils.cpp.
References mrpt::system::executeCommand(), and mrpt::to_string().
Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: c7a3bec24 Sun Mar 29 18:33:13 2020 +0200 at dom mar 29 18:50:38 CEST 2020 |