`
febird
  • 浏览: 247342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

febird.rpc echo 代码

 
阅读更多
// echo.h

class Echo : public GlobaleScope
{
public:
	BEGIN_RPC_ADD_MF(Echo)
		RPC_ADD_MF(echo)
	END_RPC_ADD_MF()

	// 3rd macro param is ';' means non-pure-virtual
	RPC_DECLARE_MF_EX(echo, (const std::string& msg, std::string* y), ;)
};
RPC_TYPEDEF_PTR(Echo);

 

// echo_server.cpp
#include <stdio.h>
#include <febird/rpc/server.h>
#include <febird/io/SocketStream.h>
#include <iostream>

using namespace std;
using namespace febird;
using namespace febird::rpc;

#include "../echo.h"

rpc_return_t Echo::echo(const std::string& msg, std::string* y)
{
	cout << "input: " << msg << endl;
	*y = "server: " + msg;
	return 0;
}

int main(int argc, char** argv[])
{

#ifdef _WIN32
	WSADATA information;
	WSAStartup(MAKEWORD(2, 2), &information);
#endif

	try {
		SocketAcceptor acceptor("0.0.0.0:8001");
		rpc_server<PortableDataInput, PortableDataOutput> server(&acceptor);

		// 加入命名的 Servant
		server.add_servant(
			new Echo,
			"echo",
			0 // 0 will not auto create GlobaleScope Object
			);

		server.start();
	}
	catch (const std::exception& exp)
	{
		printf("exception: what=%s\n", exp.what());
	}

#ifdef _WIN32
	WSACleanup();
#endif

	return 0;
}

 

// echo_client.cpp

#include <stdio.h>
#include <febird/rpc/client.h>
#include <febird/io/SocketStream.h>
#include <iostream>

using namespace std;
using namespace febird;
using namespace febird::rpc;

#include "../echo.h"

int main(int argc, char** argv[])
{
#ifdef _WIN32
	WSADATA information;
	WSAStartup(MAKEWORD(2, 2), &information);
#endif

	try {
		auto_ptr<SocketStream> cs(ConnectSocket("127.0.0.1:8001"));
		rpc_client<PortableDataInput, PortableDataOutput> client(cs.get());
		EchoPtr ec;
		client.create(ec, "echo");
		while (!cin.eof())
		{
			string msg, y;
			cin >> msg;
			ec->echo(msg, &y);
			cout << "msg:" << msg << endl;
			cout << "y__:" << y << endl;
		}
	}
	catch (const std::exception& exp)
	{
		printf("exception: what=%s\n", exp.what());
	}

#ifdef _WIN32
	WSACleanup();
#endif

	return 0;
}

 

分享到:
评论

相关推荐

    febird C++ 库(附带所有源码)

    febird.rpc is a C++ remote procedure call without an IDL supporting, it based on the serialization framework. febird.rpc provide convenient usage and fast performance, and an uniform coding style. ...

    rpc-Remote Procedure Call源码2

    远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

    pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

    pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

    matlab建立计算力学课程的笔记和文件.zip

    matlab建立计算力学课程的笔记和文件.zip

    FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

    FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写

    matlab基于RRT和人工势场法混合算法的路径规划.zip

    matlab基于RRT和人工势场法混合算法的路径规划.zip

    matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

    matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

    office 2016三和一精简版

    office 2016三和一精简版

    Scrapy-1.0.2-py2-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡咨询顾问必备宝典-时间管理.ppt

    麦肯锡咨询顾问必备宝典-时间管理.ppt

    setuptools-0.6c10-py2.4.egg

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡顾问的黄金思考方法.pptx

    麦肯锡顾问的黄金思考方法.pptx

    91fdd461elb59a4ce8dfcfc46bc283a7.msi

    91fdd461elb59a4ce8dfcfc46bc283a7.msi

    ansys maxwell

    ansys maxwell

    5-5.py

    5-5

    xx广告促销计划流程实施手册.ppt

    xx广告促销计划流程实施手册.ppt

    仿小米商城微信小程序源码+项目说明.zip

    仿小米商城微信小程序源码+项目说明.zip

    pytest-4.6.0.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Scrapy-2.10.1.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡xx客户满意服务.ppt

    麦肯锡xx客户满意服务.ppt

Global site tag (gtag.js) - Google Analytics