官网
源码下载
https://github.com/nanomsg/nanomsg/releases
我使用的版本
nanomsg-1.1.4.tar.gz
下载地址:https://download.youkuaiyun.com/download/andylauren/10682975
编译源码
1、解压源码包
rt@ubuntu:~/nano$ tar xvf nanomsg-1.1.4.tar.gz
rt@ubuntu:~/nano$ cd nanomsg-1.1.4/
2、生成makefile文件
需要使用cmake,如果机器没有安装需要安装 sudo apt install cmake
rt@ubuntu:~/nano$ mkdir build
rt@ubuntu:~/nano$ cd build
rt@ubuntu:~/nano$ cmake .. -DCMAKE_INSTALL_PREFIX=/home/rt/opt/nano
其中-DCMAKE_INSTALL_PREFIX为安装路径,如果需要安装到自己系统中就不要添加后面的参数,直接cmake ..即可。
3、编译,安装
rt@ubuntu:~/nano$ cmake --build .
rt@ubuntu:~/nano$ ctest .
rt@ubuntu:~/nano$ cmake --build . --target install
rt@ubuntu:~/nano$ sudo ldconfig
此时在安装路径下就有生成的文件了
4、测试
在这个网站上有入门的测试例子
https://nanomsg.org/gettingstarted/index.html
我们那去其中的一个作为例子代码编译运行
将https://nanomsg.org/gettingstarted/survey.html代码保存为survey.c
使用命令gcc survey.c -o survey -lnanomsg -I/home/rt/opt/nano/include -L/home/rt/opt/nano/lib -Wl,-rpath=/home/rt/opt/nano/lib
编译
执行以下命令
./survey server ipc:///tmp/survey.ipc & server=$!
./survey client ipc:///tmp/survey.ipc client0 & client0=$!
./survey client ipc:///tmp/survey.ipc client1 & client1=$!
./survey client ipc:///tmp/survey.ipc client2 & client2=$!
sleep 4
kill $server $client0 $client1 $client2
输出如下:
rt@ubuntu:~/nano$ ./survey server ipc:///tmp/survey.ipc & server=$!
[1] 25829
rt@ubuntu:~/nano$ ./survey client ipc:///tmp/survey.ipc client0 & client0=$!
[2] 25830
rt@ubuntu:~/nano$ ./survey client ipc:///tmp/survey.ipc client1 & client1=$!
[3] 25831
rt@ubuntu:~/nano$ ./survey client ipc:///tmp/survey.ipc client2 & client2=$!SERVER: nn_socket
SERVER: nn_bind
SERVER: NN_RCVTIMEO -1
SERVER: NN_RCVTIMEO 5000
SERVER: SENDING DATE SURVEY REQUEST
[4] 25834
rt@ubuntu:~/nano$ sleep 4
SERVER: ETIMEDOUT
SERVER: SURVEY COMPLETE
SERVER: SENDING DATE SURVEY REQUEST
CLIENT (client0): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client2): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client1): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client2): SENDING DATE SURVEY RESPONSE
CLIENT (client0): SENDING DATE SURVEY RESPONSE
CLIENT (client1): SENDING DATE SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:12 2018" SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:12 2018" SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:12 2018" SURVEY RESPONSE
SERVER: ETIMEDOUT
SERVER: SURVEY COMPLETE
SERVER: SENDING DATE SURVEY REQUEST
CLIENT (client0): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client1): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client2): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client0): SENDING DATE SURVEY RESPONSE
CLIENT (client2): SENDING DATE SURVEY RESPONSE
CLIENT (client1): SENDING DATE SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:13 2018" SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:13 2018" SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:13 2018" SURVEY RESPONSE
SERVER: ETIMEDOUT
SERVER: SURVEY COMPLETE
SERVER: SENDING DATE SURVEY REQUEST
CLIENT (client0): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client0): SENDING DATE SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:14 2018" SURVEY RESPONSE
CLIENT (client1): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client1): SENDING DATE SURVEY RESPONSE
CLIENT (client2): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client2): SENDING DATE SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:14 2018" SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:14 2018" SURVEY RESPONSE
SERVER: ETIMEDOUT
SERVER: SURVEY COMPLETE
SERVER: SENDING DATE SURVEY REQUEST
CLIENT (client0): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client2): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client1): RECEIVED "DATE" SURVEY REQUEST
CLIENT (client0): SENDING DATE SURVEY RESPONSE
CLIENT (client2): SENDING DATE SURVEY RESPONSE
CLIENT (client1): SENDING DATE SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:15 2018" SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:15 2018" SURVEY RESPONSE
SERVER: RECEIVED "Tue Sep 18 20:24:15 2018" SURVEY RESPONSE
[1]+ Terminated ./survey server ipc:///tmp/survey.ipc