ice配置与实例(VS2015)

运行环境(VS2015)

一、ice配置

1、ICE安装

1、进入程序包管理器(工具->NuGet包管理器->程序包管理器控制台)

在这里插入图片描述

2、安装ice、ice builder、ice插件

2.1、安装ice,选择项目,输入install-package zeroc.ice.v140 -version 3.7.1

在这里插入图片描述
Tips:V140代表VS的版本,(V140<->VS2015,V120<->VS2013),3.7.1代表ice的版本

2.2、安装ice.builder.msbuild,输入install-package zeroc.icebuilder.msbuild

在这里插入图片描述

2.3、 安装ice build插件

在这里插入图片描述

二、ice实例

1、配置

1.1、新增Slice Files筛选器(选择项目,鼠标右键)

在这里插入图片描述

1.2、修改项目属性

1.2.1、设定ice文件编译输出路径

在这里插入图片描述

1.2.2、包含ice输出目录

在这里插入图片描述

2、代码编写

Test.ice

//Test.ice

module MyIceDemo
{
	interface TestDemo
	{
		void PrintData(string strData);
	}
}

Client

//Client.cpp

#include<iostream>
#include<Ice/Ice.h>
#include"Test.h"

using namespace MyIceDemo;
int main(int argc, char *argv[])
{
	int status(0);
	Ice::CommunicatorPtr ic;
	try 
	{
		ic = Ice::initialize(argc, argv);
		//tcp/udp必须小写
		auto base(ic->stringToProxy("SimplePrinter:tcp -h 127.0.0.1 -p 10000"));

		auto printer(Ice::checkedCast<TestDemoPrx>(base));
		if (!printer)
			throw std::runtime_error("invalid proxy");

		printer->PrintData("hello");
	}
	catch (const Ice::Exception& ex)
	{
		std::cerr << ex << std::endl;
		status = 1;
	}
	catch (const char* msg)
	{
		std::cerr << msg << std::endl;
		status = 1;
	}
	if (ic)ic->destroy();

	return status;
}

Server

//接口管理类
#include<string>
#include<Ice/Ice.h>
#include"Test.h"

class iceTestImpl :public MyIceDemo::TestDemo
{
public:
	iceTestImpl();
	~iceTestImpl();
	virtual void PrintData(std::string strData, const Ice::Current &);
};

//虚函数实现
void iceTestImpl::PrintData(std::string strData, const Ice::Current &)
{
	std::cout << strData.c_str() << std::endl;
}

//main.cpp

//Main.cpp
#include<iostream>
#include "iceTestImpl.h"

using namespace MyIceDemo;
int main(int argc,char *argv[])
{
	int status(0);
	Ice::CommunicatorPtr ic;
	try
	{
		ic = Ice::initialize(argc, argv);
		auto adapter(ic->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000"));
		auto servant(std::make_shared<iceTestImpl>());
		adapter->add(servant, Ice::stringToIdentity("SimplePrinter"));
		adapter->activate();
		ic->waitForShutdown();
	}
	catch (const Ice::Exception & e)
	{
		std::cerr << e << std::endl;
		status = 1;
	}
	catch (const char * msg)
	{
		std::cerr << msg << std::endl;
		status = 1;
	}
	if (ic) 
	{
		try 
		{
			ic->destroy();
		}
		catch (const Ice::Exception & e)
		{
			std::cerr << e << std::endl;
			status = 1;
		}
	}
	return status;
}

三、linux安装ice**

3.1、yum源配置

cd /etc/yum.repos.d
sudo wget https://zeroc.com/download/Ice/3.7/el7/zeroc-ice3.7.repo

ls查看ice源
在这里插入图片描述

3.2、安装

3.2.1、Install Ice for C++, Python, PHP, and all Ice services.

sudo yum install ice-all-runtime ice-all-devel

3.2.2、Install Freeze for C++

 sudo yum install libfreeze-c++-devel freeze-utils

3.2.3、安装的版本号查看:icebox -v
在这里插入图片描述

发布了35 篇原创文章 · 获赞 2 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Wite_Chen/article/details/84405253