New Example UDP Client Server application
[senf.git] / Examples / UDPClientServer / udpServer.cc
1 // Custom includes
2 #include <string>
3 #include <senf/Socket/Protocols/INet.hh>
4 #include <senf/Scheduler/Scheduler.hh>
5 #include <senf/Utils/membind.hh>
6
7 class Server
8 {
9     senf::UDPv4ClientSocketHandle serverSock;
10
11 public:
12     Server(senf::INet4Address const & host, unsigned int port)
13         : serverSock(senf::INet4SocketAddress(host, port)) {}
14
15         void run() 
16         {
17                 senf::Scheduler::instance().add(serverSock, senf::membind(&Server::readFromClient, this), senf::Scheduler::EV_READ);
18                 senf::Scheduler::instance().process();
19         }
20
21 private:
22         void readFromClient(senf::Scheduler::EventId event)
23         {
24                 std::string data (serverSock.read());
25                 std::cout << "> " << data<<std::endl ;
26         }
27 };
28
29 int main(int argc, char const * argv[])
30 {
31         try 
32         {
33                 Server testSock(senf::INet4Address::Loopback, 4243);
34                 testSock.run();
35         }
36         
37         catch (std::exception const & ex) {
38         std::cerr << senf::prettyName(typeid(ex)) << ": " << ex.what() << "\n";
39         }
40         
41         return 0;
42 }