当前位置:网站首页 > Java教程 > 正文

nanomsg 教程 java



上次的推文实用 | 分享几个非常实用的开源项目中有提到过nanomsg,正好最近的工作中也有用到nanomsg,本篇推文来简单分享一下nanomsg的基本使用。

nanomsg是一个实现了几种 的高性能通信库;可扩展协议的任务是定义多个应用系统如何通信,从而组成一个大的分布式系统。

下载链接:

https://github.com/gaobaoru/nanomsg/

当前版本nanomsg支持以下协议:

  • 配对模式:简单的一对一的通信;
  • 总线模式:简单的多对多的通信;
  • 请求/回复模式:支持组建大规模的集群服务来处理用户请求;
  • 扇入模式:支持从多个源聚合请求消息;
  • 扇出模式:支持分配到多个节点以支持负载均衡;
  • 调查模式:允许在一个单一的请求里检查多个应用的状态;

可扩展协议是在网络通信协议之上实现的,当前版本nanomsg支持以下几种传输机制:

  • INPROC:单进程内通信;
  • IPC:单机内多进程的通信;
  • TCP:通过tcp协议的网络通信;

nanomsg用c实现,不依赖系统特性,所以支持多个操作系统。

按照上面的链接下载后得到:

首先创建一个build文件夹用于管理我们编译所需、编译生成的一些文件。

这里,我们演示编译/交叉编译,首先在build目录下分别创建如下两个文件夹存放我们待会编译得到的x86_lib、arm_lib:

然后在build路径下根据自己的需要输入如下命令生成Makefile、进行编译/交叉编译、测试:

1、编译

① :/usr/local/ 是默认安装到的根目录,可以通过修改 变量的值来指定这些文件应该拷贝到哪个目录,这里我们指定到当前目录的nanomsg_x86_lib目录。

② :编译。

③ :测试。CMake 提供了一个称为 CTest 的测试工具,nanomsg项目根目录的 CMakeLists 文件中调用了 add_test 命令进行测试。

④ :安装。把编译生成的库及相关头文件安装到nanomsg_x86_lib目录中。

⑤ :让生成的nanomsg动态链接库为系统所共享。ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。

查看生成的动态库是否是x86架构的:

2、交叉编译

在nanomsg根目录下的CMakeLists.txt文件里加上交叉编译器设置:

然后输入如下命令:

与上面的编译x86的nanomsg 库的步骤差不多,这里把测试的指令 去掉了,因为生成的可执行文件是arm架构的,所以直接运行测试会出错。

查看生成的动态库是否是arm架构的:

nanomsg可用于多线程、多进程、多机通信。nanomsg是一个socket library,所以其应用接口与标准的socket接口差不多,只是多了前缀 ,如nn_socket、nn_close、nn_send、nn_recv等。关于socket可查阅往期笔记:socket编程笔记

下面演示进程间通信的client-server的例子,以下测试代码主要实现的是client-server进行收发测试。

nanomsg_server.c:

nanomsg_client.c:

编译:

  • -I xxx:指定头文件路径。
  • -L xxx:指定库路径。
  • -lnanomsg:链接动态库nanomsg.so。

运行测试:

运行可能会出现如下错误:

不能找到共享库文件 ,加载失败。因为一般情况下Linux会在 路径中搜索需要用到的库,而 库并不在这个路径下。

解决方法有两种:一种就是把这个文件拷贝至路径下,但是一般不允许这样做,一般用户也不允许往这个路径里拷贝东西。另一种就是把当前路径增加为动态库的搜索路径,命令如:

export LD_LIBRARY_PATH=/home/book/git_clone/nanomsg/build/nanomsg_x86_lib/lib:$LD_LIBRARY_PATH

然后继续运行:

可见,收发测试成功。

以上就是本次关于nanomsg的简单使用分享,希望能对大家有帮助。

【拜托了,物联网!】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/

  • 上一篇: java无门槛教程
  • 下一篇: eclipse-java安装教程
  • 版权声明


    相关文章:

  • java无门槛教程2024-12-23 13:42:03
  • java程序启动教程2024-12-23 13:42:03
  • java源码使用教程2024-12-23 13:42:03
  • java教程 word2024-12-23 13:42:03
  • java教程教学2024-12-23 13:42:03
  • eclipse-java安装教程2024-12-23 13:42:03
  • jdk安装教程java2024-12-23 13:42:03
  • java集群教程2024-12-23 13:42:03
  • java 使用redis教程2024-12-23 13:42:03
  • ide安装教程java2024-12-23 13:42:03