// NeL - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . // // Includes // #include "nel/misc/types_nl.h" #include "nel/net/service.h" #include "nel/net/udp_sim_sock.h" // // Namespaces // using namespace std; using namespace NLMISC; using namespace NLNET; // // Variables // CUdpSock *UdpSock = NULL; // // Main Class // class CBenchService : public IService { public: void init() { uint16 port = ConfigFile.getVar("UdpPort").asInt(); nlinfo ("Starting external UDP socket on port %d", port); UdpSock = new CUdpSock (false); nlassert (UdpSock); UdpSock->bind (port); } bool update () { try { uint len; CInetAddress addr; uint8 buffer[1000]; while (UdpSock->dataAvailable()) { len = 1000; UdpSock->receivedFrom((uint8*)buffer, len, addr); nlinfo ("Received UDP datagram size %d from %s", len, addr.asString().c_str()); CMemStream msgout; uint32 foo = 10; msgout.serial (foo); uint32 size = msgout.length(); UdpSock->sendTo (msgout.buffer(), size, addr); nldebug ("Sent UDP datagram size %d to %s", size, addr.asString().c_str()); } } catch (Exception &e) { nlwarning ("Exception catched: '%s'", e.what()); } return true; } void release () { if (UdpSock != NULL) delete UdpSock; } }; NLNET_SERVICE_MAIN (CBenchService, "UDPS", "udp_service", 0, EmptyCallbackArray, "", "")