TCP Manual

About

The Transmission Control Protocol allows to create network connections to remote machines in order to send data. The maxon::NetworkTcpInterface is used to create either an outgoing connection to send TCP/IP data or to create an server to receive such data.

Note
The TCP interface uses an AioService. See maxon::AioServiceInterface.

NetworkTcpInterface

The maxon::NetworkTcpInterface provides these functions:

NetworkTcpServerInterface

The maxon::NetworkTcpServerInterface defines a TCP server that reacts to incoming TCP connections:

// This example starts a TCP server. The behaviour on an incoming
// connection is defined with the given callback function.
// create AioService
g_tcpIoService.Start() iferr_return;
// create and start server
g_tcpServer = maxon::NetworkTcpInterface::CreateServer(localAddr, TCPServerCallback, g_tcpIoService, maxon::JOBQUEUE_CURRENT) iferr_return;
g_tcpServer.Start() iferr_return;
Definition: network_ip_addr.h:444
static auto Create(ARGS &&... args)
Definition: apibase.h:2818
static const JobQueueInterface::Current JOBQUEUE_CURRENT
Equivalent to calling GetDestinationQueue(), you just save a function call.
Definition: jobqueue.h:377
The maxon namespace contains all declarations of the MAXON API.
Definition: autoweight.h:14
static const WILDCARD_IPV4_ADDRESS_TYPE WILDCARD_IPV4_ADDRESS
Definition: network_ip_addr.h:45
#define iferr_return
Definition: resultbase.h:1524

For an example on the callback function see below.

NetworkTcpConnectionInterface

The maxon::NetworkTcpConnectionInterface represents an established TCP connection. This connection can receive data from the remote machine or send data to that machine.

// This example shows a callback function that defines the behaviour of a TCP server for an incoming TCP connection.
static maxon::Result<void> TCPServerCallback(maxon::Result<void> res, maxon::NetworkTcpConnectionRef connection)
{
// print remote address
const maxon::NetworkIpAddrPort remote = connection.GetRemoteAddress();
DiagnosticOutput("Connected with @", remote);
// define receive callback
connection.Receive(
{
// print received message
DiagnosticOutput("Message: @", message);
return maxon::OK;
return maxon::OK;
}
const char ** buffer
Definition: abstract.h:327
Definition: string.h:1237
const char * message
Definition: pyerrors.h:189
Py_UCS4 * res
Definition: unicodeobject.h:1113
return OK
Definition: apibase.h:2735
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:170
#define iferr_scope
Definition: resultbase.h:1389
// This example opens a TCP connection to a remote host and sends some data.
// prepare AioServiceRef
const maxon::AioServiceRef service = maxon::AioServiceRef::Create() iferr_return;
service.Start() iferr_return;
// open TCP connection
maxon::NetworkTcpInterface::OpenOutgoingConnection(remoteAddr,
[](maxon::Result<void>, maxon::NetworkTcpConnectionRef connection) -> maxon::Result<void>
{
// prepare message
maxon::CString messageCStr("Test Message");
for (const maxon::Char c: messageCStr)
{
iferr (buffer.Append(c))
err.DbgStop();
}
// send message
return connection.Send(std::move(buffer));
Definition: string.h:1492
Py_UNICODE c
Definition: unicodeobject.h:1200
char Char
signed 8 bit character
Definition: apibase.h:198
#define iferr(...)
Definition: errorbase.h:388

Further Reading