本实例转载自:http://blog.csdn.net/nokianasty/article/details/9701863
使用Ice::Application简化代码的编写
virtual int run(int, char*[]) = 0;
服务器端:
- #include <ice/ice.h>
- #include "printer.h"
- using namespace std;
- using namespace Demo;
- struct PrinterImp : Printer{
- virtual void printString(const ::std::string& s, const ::Ice::Current& = ::Ice::Current())
- {
- cout << s << endl;
- }
- };
- class MyApp : public Ice::Application{
- public:
- virtual int run(int, char*[]){
- Ice::CommunicatorPtr& ic = communicator();
- Ice::ObjectAdapterPtr adapter
- = ic->createObjectAdapterWithEndpoints(
- "SimplePrinterAdapter", "default -p 10000");
- Ice::ObjectPtr object = new PrinterImp;
- adapter->add(object, ic->stringToIdentity("SimplePrinter"));
- adapter->activate();
- ic->waitForShutdown();
- return 0;
- }
- };
- int main(int argc, char* argv[])
- {
- MyApp app;
- return app.run(argc, argv);
- }
客户端:
- #include <ice/ice.h>
- #include <printer.h>
- using namespace std;
- using namespace Demo;
- class MyApp: public Ice::Application{
- public:
- virtual int run(int, char*[])
- {
- Ice::CommunicatorPtr ic = communicator();
- Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 10000");
- PrinterPrx printer = PrinterPrx::checkedCast(base);
- if(!printer) throw "Invalid Proxy!";
- printer->printString("Hello World!");
- }
- };
- int main(int argc, char* argv[])
- {
- MyApp app;
- return app.run(argc,argv);
- }