在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

nanomsg的基本使用

FPGA之家 ? 來源:Linux大陸 ? 作者:Linux大陸 ? 2022-07-04 10:39 ? 次閱讀

前言

上次的推文實用 | 分享幾個非常實用的開源項目中有提到過nanomsg,正好最近的工作中也有用到nanomsg,本篇推文來簡單分享一下nanomsg的基本使用。

nanomsg簡介

nanomsg是一個實現了幾種可擴展協議的高性能通信庫;可擴展協議的任務是定義多個應用系統如何通信,從而組成一個大的分布式系統。

下載鏈接:

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

當前版本nanomsg支持以下協議:

配對模式:簡單的一對一的通信;

總線模式:簡單的多對多的通信;

請求/回復模式:支持組建大規模的集群服務來處理用戶請求;

扇入模式:支持從多個源聚合請求消息;

扇出模式:支持分配到多個節點以支持負載均衡;

調查模式:允許在一個單一的請求里檢查多個應用的狀態;

可擴展協議是在網絡通信協議之上實現的,當前版本nanomsg支持一下網絡協議:

INPROC:單進程內通信;

IPC:單機內多進程的通信;

TCP:通過tcp協議的網絡通信;

nanomsg用c實現,不依賴系統特性,所以支持多個操作系統

nanomsg編譯/交叉編譯

按照上面的鏈接下載后的到:

73bf60e4-e3a1-11ec-ba43-dac502259ad0.png

首先創建一個build文件夾用于管理我們編譯所需、編譯生成的一些文件。

這里,我們演示編譯/交叉編譯,首先在build目錄下分別創建如下兩個文件夾存放我們待會編譯得到的x86_lib、arm_lib:

73eaf808-e3a1-11ec-ba43-dac502259ad0.png

然后在build路徑下根據自己的需要輸入如下命令生成Makefile、進行編譯/交叉編譯、測試:

1、編譯

①cmake..-DCMAKE_INSTALL_PREFIX=$PWD/nanomsg_x86_lib
②cmake--build.
③ctest.
④sudocmake--build.--targetinstall
⑤sudoldconfig

① :/usr/local/ 是默認安裝到的根目錄,可以通過修改 CMAKE_INSTALL_PREFIX 變量的值來指定這些文件應該拷貝到哪個目錄,這里我們指定到當前目錄的nanomsg_x86_lib目錄。

7410e874-e3a1-11ec-ba43-dac502259ad0.png

② :編譯。

74437f14-e3a1-11ec-ba43-dac502259ad0.png

③ :測試。CMake 提供了一個稱為 CTest 的測試工具,nanomsg項目根目錄的 CMakeLists 文件中調用了 add_test 命令進行測試。

7480142e-e3a1-11ec-ba43-dac502259ad0.png

④ :安裝。把編譯生成的庫及相關頭文件安裝到nanomsg_x86_lib目錄中。

74d90d68-e3a1-11ec-ba43-dac502259ad0.png

7533fb60-e3a1-11ec-ba43-dac502259ad0.png

⑤ :讓生成的nanomsg動態鏈接庫為系統所共享。ldconfig是一個動態鏈接庫管理命令,其目的為了讓動態鏈接庫為系統所共享。

查看生成的動態庫是否是x86架構的:

7554b1fc-e3a1-11ec-ba43-dac502259ad0.png

2、交叉編譯

在nanomsg根目錄下的CMakeLists.txt文件里加上交叉編譯器設置:

757ff60a-e3a1-11ec-ba43-dac502259ad0.png

然后輸入如下命令:

①cmake..-DCMAKE_INSTALL_PREFIX=$PWD/nanomsg_arm_lib
②cmake--build.
③sudocmake--build.--targetinstall
④sudoldconfig

與上面的編譯x86的nanomsg 庫的步驟差不多,這里把測試的指令ctest .去掉了,因為生成的可執行文件是arm架構的,所以直接運行測試會出錯。

查看生成的動態庫是否是arm架構的:

75dd3c0c-e3a1-11ec-ba43-dac502259ad0.png

nanomsg使用例子

nanomsg可用于多線程、多進程、多機通信。nanomsg是一個socket library,所以其應用接口與標準的socket接口差不多,只是多了前綴nn_,如nn_socket、nn_close、nn_send、nn_recv等。關于socket可查閱往期筆記:

【socket筆記】TCP、UDP通信總結

【socket應用】基于C語言的天氣客戶端的實現

下面演示進程間通信的client-server的例子,以下測試代碼主要實現的是client-server進行收發測試。

nanomsg_server.c:

#include
#include
#include
#include
#include
#include
#include
#include

#defineBUF_LEN100

char*url="tcp://127.0.0.1:2021";

intmain(void)
{
intserver_sock=0;
charbuf[BUF_LEN]={0};

if(server_sock=nn_socket(AF_SP,NN_PAIR)

nanomsg_client.c:

#include
#include
#include
#include
#include
#include
#include
#include

#defineBUF_LEN100

char*url="tcp://127.0.0.1:2021";

intmain(void)
{
intclient_sock=0;
charbuf[BUF_LEN]={0};

if(client_sock=nn_socket(AF_SP,NN_PAIR)0)
{
printf("recieveservermsg:%s
",buf);
}
memset(buf,0,BUF_LEN);
}

nn_close(client_sock);

return0;
}

編譯:

gccnanomsg_server.c-onanomsg_server-I/home/book/git_clone/nanomsg/build/nanomsg_x86_lib/include-L/home/book/git_clone/nanomsg/build/nanomsg_x86_lib/lib-lnanomsg
gccnanomsg_client.c-onanomsg_client-I/home/book/git_clone/nanomsg/build/nanomsg_x86_lib/include-L/home/book/git_clone/nanomsg/build/nanomsg_x86_lib/lib-lnanomsg

-I xxx:指定頭文件路徑。

-L xxx:指定庫路徑。

-lnanomsg:鏈接動態庫nanomsg.so。

運行測試:

運行可能會出現如下錯誤:

760aa476-e3a1-11ec-ba43-dac502259ad0.png

不能找到共享庫文件libtest_d.so,加載失敗。因為一般情況下Linux會在/usr/lib路徑中搜索需要用到的庫,而libtest_d.so庫并不在這個路徑下。

解決方法有兩種:一種就是把這個文件拷貝至/usr/lib路徑下,但是一般不允許這樣做,一般用戶也不允許往這個路徑里拷貝東西。另一種就是把當前路徑增加為動態庫的搜索路徑,命令如:

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

然后繼續運行:

763eb144-e3a1-11ec-ba43-dac502259ad0.png

可見,收發測試成功。以上就是本次關于nanomsg的簡單使用分享,希望能對大家有幫助。

原文標題:實用 | 一個高性能通信庫的簡單使用分享

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11314

    瀏覽量

    209807
  • 網絡協議
    +關注

    關注

    3

    文章

    268

    瀏覽量

    21569
  • 開源
    +關注

    關注

    3

    文章

    3368

    瀏覽量

    42564
  • 通信庫
    +關注

    關注

    0

    文章

    3

    瀏覽量

    5606

原文標題:實用 | 一個高性能通信庫的簡單使用分享

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LC3網絡技術演講系列之一:基于VPP平臺的網絡服務優化

    加解密等。這就需要提供一種進程間通信的機制。這里有很多種選擇,比較直接的比如采用unix socket、netlink等,復雜一點采用TIPC等。我們采用了nanomsg來完成進程間通信,主要考慮
    發表于 07-23 14:02 ?3498次閱讀

    分享一個高性能通信庫的簡單使用技巧

    nanomsg簡介 nanomsg是一個實現了幾種可擴展協議的高性能通信庫;可擴展協議的任務是定義多個應用系統如何通信,從而組成一個大的分布式系統。 下載鏈接: https://github.com
    的頭像 發表于 05-11 15:09 ?2373次閱讀
    分享一個高性能通信庫的簡單使用技巧
    主站蜘蛛池模板: 亚洲午夜综合网| 手机在线视频观看| 国产午夜精品理论片在线| 久久综合久| 色吧在线观看| 色综合网址| 日本3级视频| 手机在线色| 最近2018中文字幕免费看2019| 完全免费在线视频| 欧美亚洲韩国国产综合五月天| 天天干夜夜曰| 国产精品秒播无毒不卡| 男人日女人视频免费看| 亚洲免费视频播放| 一区二区美女视频| 色优久久| 久久lu| www.av小视频| 天堂8资源8在线| 国产成人亚洲影视在线| 黄色一区二区三区| 天堂自拍| 精品一区二区在线观看| 男操女免费视频| 国产精品29页| 三级在线观看国产| 黄网站免费大全| 国产在线五月综合婷婷| 经典三级第一页| 337p亚洲精品色噜噜狠狠| bt天堂在线www最新版资源网| 天天做天天摸天天爽天天爱| 精品久草| 男人呻吟双腿大开男男h互攻| 午夜男人影院| 久久久久久88色偷偷| 午夜影院a| 女人被两根一起进3p在线观看 | 三级理论在线| 国产黄色大片又色又爽|