1.新建解决方案MyICE;
2.在解决方案下新建两个项目,分别是server和client;
3.设置属性
在C/C++——常规中附加包含目录中添加ICE安装中include路径;
在链接器——常规中附加库目录中添加ICE安装中lib/vc20路径(由于我是VS2013,因此是vc120路径);
在链接器——输入中附加依赖项中添加iced.lib和lceutild.lib(**d.dll代表debug);
4.在server右键最下方Ice Configuration中勾选Enable Ice Builder;
5.在server源文件中新建Printer.ice。注意后缀名为ice。
//Printer.ice
module Demo{
interface Printer{
void printString(string s);
};
};
编译后会生成Printer.h和Printer.cpp文件和一系列外部依赖项。
6.在server源文件中新建server.cpp。
//server.cpp
#include <Ice/Ice.h>
#include "Printer.h"
#include <iostream>
using namespace std;
using namespace Demo;
class PrinterI : public Printer
{
public:
virtual void printString(const string &s, const Ice::Current &);
};
void PrinterI::printString(const string & s, const Ice::Current &)
{
cout << s << endl;
}
int main(int argc, char * argv[])
{
int status = 0;
Ice::CommunicatorPtr ic;
try
{
ic = Ice::initialize(argc, argv);
Ice::ObjectAdapterPtr adapter
= ic->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000");
Ice::ObjectPtr object = new PrinterI;
adapter->add(object, ic->stringToIdentity("SimplePrinter"));
adapter->activate();
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;
}
7.客户端
同上3-5步的服务器部分相同。再添加client.cpp文件。
//client.cpp
#include<Ice/Ice.h>
#include "Printer.h"
#include <iostream>
#include <string>
using namespace std;
using namespace Demo;
int main(int argc, char * argv[])
{
int status = 0;
Ice::CommunicatorPtr ic;
try{
ic = Ice::initialize(argc, argv);
Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 10000");
PrinterPrx printer = PrinterPrx::checkedCast(base);
if (!printer)
throw "invalid proxy";
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)
ic->destroy();
return status;
system("pause");
}
8.先运行server,再运行client。得到Hello world!