#include #include #include #include #include "udpserver.h" void PrintIPAddress(char *pcInformationString, IPAddress &cAddr) { printf("%s\n", pcInformationString); printf(" - Name : %s\n", (const char *) cAddr); printf(" - Family : %s\n", (cAddr.GetAddressFamily() == AF_INET6)?"IPv6": ((cAddr.GetAddressFamily() == AF_INET)?"IPv4":"Unknown")); printf(" - Address : %s\n", cAddr.GetAddressString()); } void UDPServer(int iPortNumber, bool bIPv6) { UDPServerSocket cServerSocket(iPortNumber, bIPv6); IPAddress cIPSource; int iBytesTransferred, iPortSource; char pcBuffer[65535]; pcBuffer[0] = 0; printf("UDP %s Echo Server\n\n", (bIPv6)?"IPv6":"IPv4"); PrintIPAddress("Created Server Socket - Socket Details", cServerSocket.LocalIPAddress()); printf(" - Port : %d\n\n", cServerSocket.LocalPortNumber()); for (;;) { PrintIPAddress("Waiting for data on :", cServerSocket.LocalIPAddress()); printf(" - Port : %d\n\n", cServerSocket.LocalPortNumber()); iBytesTransferred = cServerSocket.ReceiveDatagram(pcBuffer, 65535, cIPSource, iPortSource); PrintIPAddress("Received datagram from :", cIPSource); printf(" - Port : %d\n", iPortSource); printf(" - Size : %d bytes\n", iBytesTransferred); printf(" - Buffer : ["); for (int i = 0; i < iBytesTransferred; i++) { printf("%c", pcBuffer[i]); } printf("]\n\n"); printf("Echoing datagram to client...\n\n"); iBytesTransferred = cServerSocket.SendDatagram(pcBuffer, iBytesTransferred, cIPSource, iPortSource); printf("Sent %d bytes of data\n\n", iBytesTransferred); } }