////////////////////////////////////////////////////// //! rcsid="$Id: exEndPoint.cc,v 1.1 2000/12/13 12:23:59 ees1cg Exp $" #include "amma/Option.hh" #include "amma/EntryPnt.hh" #include "amma/NetEndPoint.hh" #include "amma/Date.hh" #include "amma/BinString.hh" class TestRecieveC { public: void HandleMessage(StringC &msg) { cerr << "TestRecieveC::HandleMessage() : Got '" << msg << "' \n"; } }; using namespace StdIO; int exEndPoint(int nargs,char *args[]) { // Do normal option processing .... OptionC opt(nargs,args); StringC addr = opt.String("a","localhost:4041","Address to connect to. "); BooleanT serv = opt.Boolean("s",false,"Server. "); opt.Check(); TestRecieveC atest; if(serv) { // Start a socket server. SocketC sktserv(addr,true); if(!sktserv.IsOpen()) { cerr << "Failed to open server socket. \n"; return 1; } while(1) { SocketC skt = sktserv.Listen(); // When a socket connects, make and end point and send a 'hello' message. NetEndPointC ep(skt); ep.Register(2,"Test",atest,&TestRecieveC::HandleMessage); StringC msg("Hello from server."); ep.Send(2,msg); } } { NetEndPointC ep(addr); // Register reciever function for the hello message. ep.Register(2,"Test",atest,&TestRecieveC::HandleMessage); // Wait for hello messages. StringC msg("Hello from client."); ep.Send(2,msg); while(1) DateC::Sleep(10); } return 0; } AMMA_ENTRY_POINT(exEndPoint);