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 = maxon::AioServiceRef::Create() iferr_return;
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;

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
const maxon::String message { buffer };
DiagnosticOutput("Message: @", message);
return maxon::OK;
return maxon::OK;
}
// 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
connection.Send(std::move(buffer)) iferr_return;
return maxon::OK;

Further Reading