UDP Manual
The User Datagram Protocol allows to send messages across networks without connections. The maxon::NetworkUdpInterface is used to create a sender to send UDP messages or to create a server to receive messages.
The maxon::NetworkUdpInterface provides these functions:
The maxon::NetworkUdpServerInterface controls an UDP server that can receive UDP data:
// create AioServiceRef g_ioService = maxon::AioServiceRef::Create() iferr_return ; g_ioService.Start() iferr_return ;
// create and start server auto localAddr = maxon :: NetworkIpAddrPort ( maxon :: WILDCARD_IPV4_ADDRESS , 1000); g_udpServer = maxon ::NetworkUdpInterface::CreateUdpServer(localAddr, UDPCallback, g_ioService) iferr_return ; g_udpServer.Start() iferr_return ;
// This example shows a callback function that defines the behaviour of an UDP server for handling incoming data.
// print the remote address DiagnosticOutput ( "Sender: @" , sender);
// print the received data const maxon::String message { receivedData }; DiagnosticOutput ( "Message: @" , message);
The maxon::NetworkUdpSenderInterface allows to send data via UDP to a remote machine.
// prepare AioServiceRef const maxon::AioServiceRef service = maxon::AioServiceRef::Create() iferr_return ; service.Start() iferr_return ;
// create sender const maxon ::NetworkUdpSenderRef sender = maxon ::NetworkUdpInterface::CreateUdpSender( maxon :: PROTOCOL :: IPV4 , service) iferr_return ;
// prepare message maxon ::CString messageCStr("Test Message"); maxon :: AioBuffer buffer; for (const maxon :: Char c : messageCStr) { iferr (buffer.Append(c)) err.DbgStop(); }
// send message sender.Send(std::move(buffer), remoteAdress) iferr_return ;
maxon::NetworkUdpChannelInterfac represents an asynchronous UDP channel that can both receive data and send data:
// prepare AioServiceRef g_channelIoService = maxon::AioServiceRef::Create() iferr_return ; g_channelIoService.Start() iferr_return ;
// create channel auto localAddr = maxon :: NetworkIpAddrPort ( maxon :: WILDCARD_IPV4_ADDRESS , 1001); g_udpChannel = maxon ::NetworkUdpInterface::CreateUdpChannel(localAddr, g_channelIoService) iferr_return ; g_udpChannel.Receive(ChannelReceiveCallback) iferr_return ;
// This callback function for an UDP channel prints the received message. static maxon::Result<void> ChannelReceiveCallback( maxon::Result<void> , maxon::AioBuffer buf, maxon::NetworkIpAddrPort sender) { iferr_scope ;
// print the remote address DiagnosticOutput ( "Sender: @" , sender);
// print the received data const maxon::String message { buf }; DiagnosticOutput ( "Message: @" , message); return maxon::OK ; }