00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <string>
00025 #include <senf/Socket/Protocols/INet.hh>
00026 #include <senf/Scheduler/Scheduler.hh>
00027 #include <senf/Utils/membind.hh>
00028
00029 class Server
00030 {
00031 senf::UDPv4ClientSocketHandle serverSock;
00032 senf::scheduler::FdEvent event;
00033
00034 public:
00035 Server(senf::INet4Address const & host, unsigned int port)
00036 : serverSock(senf::INet4SocketAddress(host, port)),
00037 event("UDPv4ClientServer", senf::membind(&Server::readFromClient, this),
00038 serverSock, senf::scheduler::FdEvent::EV_READ, false)
00039 {}
00040
00041 void run()
00042 {
00043 event.enable();
00044 senf::scheduler::process();
00045 }
00046
00047 private:
00048 void readFromClient(int event)
00049 {
00050 std::string data (serverSock.read());
00051 std::cout << "> " << data<<std::endl ;
00052 }
00053 };
00054
00055 int main(int argc, char const * argv[])
00056 {
00057 try {
00058 Server testSock(senf::INet4Address::Loopback, 4243);
00059 testSock.run();
00060 }
00061
00062 catch (std::exception const & ex) {
00063 std::cerr << senf::prettyName(typeid(ex)) << ": " << ex.what() << "\n";
00064 }
00065 return 0;
00066 }
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077