二 示例程序一
2016-09
睿丰德信息科技有限公司
// 调用适配器的activate 方法激活适配器 // (适配器一开始是在扣留(holding)状态创建的;这种做法在下面这样的情况下很有用: // 我们有多个servant,它们共享同一个适配器,而在所有servant实例化之前我们不想处理请求)。 // 一旦适配器被激活,服务器就会开始处理来自客户的请求。 adapter->activate();
// 调用waitForShutdown。这个方法挂起发出调用的线程,直到服务器实现终止为止 ic->waitForShutdown(); } catch (const Ice::Exception& e) { cerr << e << endl; status = 1; } catch (const char* msg) { cerr << msg << endl; status = 1; } if (ic) { try { ic->destroy(); } catch (const Ice::Exception& e) { cerr << e << endl; status = 1; } } return status; } 3) Client端开发 选择Win32控制台空白项目 添加Iced.lib IceUtild.lib 增加Client.cpp,内容: #include <Ice/Ice.h> #include "Printer.h" using namespace std; using namespace demo; int main(int argc, char * argv[]) { int status = 0; Ice::CommunicatorPtr ic; try { // 调用Ice::initialize 初始化Ice runtime。 ic = Ice::initialize(argc, argv); // 调用通信器的stringToProxy创建一个代理,所用参数是"SimplePrinter:default -p 10000"。 // 注意,这个串包含的是对象标识和服务器所用的端口号 Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 10000"); // stringToProxy 返回的代理的类型是Ice::ObjectPrx,这种类型位于接口和类的继承树的根部。 // 但要实际与我们的打印机交谈,我们需要的是Printer 接口、而不是Object 接口的代理。 // 为此,我们需要调用PrinterPrx::checkedCast 进行向下转换。这个方法会发送一条消息给服务器, // 实际询问“这是Printer 接口的代理吗?”如果是,这个调用就会返回Printer 的一个代理; // 如果代理代表的是其他类型的接口,这个调用就会返回一个空代理。 PrinterPrx printer = PrinterPrx::checkedCast(base); // 测试向下转换是否成功,如果不成功,就抛出出错消息,终止客户。 if (!printer) throw "Invalid proxy"; // 调用代理的printString 方法,把"Hello World!" 串传给它。 // 服务器会在它的终端上打印这个串。 printer->printString("Hello World!"); } catch (const Ice::Exception & ex) { cerr << ex << endl; status = 1; } catch (const char * msg) { cerr << msg << endl; status = 1; } if (ic) { try { ic->destroy(); } catch (const Ice::Exception& e) { cerr << e << endl; status = 1; } } return status; }RFID管理系统集成商 RFID中间件 条码系统中间层 物联网软件集成