日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

FPGA之家 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2021-05-11 15:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

nanomsg簡介

nanomsg是一個實現(xiàn)了幾種可擴(kuò)展協(xié)議的高性能通信庫;可擴(kuò)展協(xié)議的任務(wù)是定義多個應(yīng)用系統(tǒng)如何通信,從而組成一個大的分布式系統(tǒng)。

下載鏈接:

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

當(dāng)前版本nanomsg支持以下協(xié)議:

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

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

請求/回復(fù)模式:支持組建大規(guī)模的集群服務(wù)來處理用戶請求;

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

扇出模式:支持分配到多個節(jié)點以支持負(fù)載均衡;

調(diào)查模式:允許在一個單一的請求里檢查多個應(yīng)用的狀態(tài);

可擴(kuò)展協(xié)議是在網(wǎng)絡(luò)通信協(xié)議之上實現(xiàn)的,當(dāng)前版本nanomsg支持一下網(wǎng)絡(luò)協(xié)議:

INPROC:單進(jìn)程內(nèi)通信;

IPC:單機(jī)內(nèi)多進(jìn)程的通信;

TCP:通過tcp協(xié)議的網(wǎng)絡(luò)通信;

nanomsg用c實現(xiàn),不依賴系統(tǒng)特性,所以支持多個操作系統(tǒng)

nanomsg編譯/交叉編譯

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

c5709ade-b20b-11eb-bf61-12bb97331649.png

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

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

c5963032-b20b-11eb-bf61-12bb97331649.png

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

1、編譯

① cmake 。。 -DCMAKE_INSTALL_PREFIX=$PWD/nanomsg_x86_lib

② cmake --build 。

③ ctest 。

④ sudo cmake --build 。 --target install

⑤ sudo ldconfig

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

c5a066e2-b20b-11eb-bf61-12bb97331649.png

② :編譯。

c5b1746e-b20b-11eb-bf61-12bb97331649.png

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

c5bd8f9c-b20b-11eb-bf61-12bb97331649.png

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

c6396428-b20b-11eb-bf61-12bb97331649.png

c647ed5e-b20b-11eb-bf61-12bb97331649.png

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

查看生成的動態(tài)庫是否是x86架構(gòu)的:

c65214fa-b20b-11eb-bf61-12bb97331649.png

2、交叉編譯

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

c6622048-b20b-11eb-bf61-12bb97331649.png

然后輸入如下命令:

① cmake 。。 -DCMAKE_INSTALL_PREFIX=$PWD/nanomsg_arm_lib

② cmake --build 。

③ sudo cmake --build 。 --target install

④ sudo ldconfig

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

查看生成的動態(tài)庫是否是arm架構(gòu)的:

c6943862-b20b-11eb-bf61-12bb97331649.png

nanomsg使用例子

nanomsg可用于多線程、多進(jìn)程、多機(jī)通信。nanomsg是一個socket library,所以其應(yīng)用接口與標(biāo)準(zhǔn)的socket接口差不多,只是多了前綴nn_,如nn_socket、nn_close、nn_send、nn_recv等。關(guān)于socket可查閱往期筆記:

【socket筆記】TCP、UDP通信總結(jié)

【socket應(yīng)用】基于C語言的天氣客戶端的實現(xiàn)

下面演示進(jìn)程間通信的client-server的例子,以下測試代碼主要實現(xiàn)的是client-server進(jìn)行收發(fā)測試。

nanomsg_server.c:

#include 《stdio.h》

#include 《pthread.h》

#include 《stdlib.h》

#include 《string.h》

#include 《unistd.h》

#include 《nanomsg/pair.h》

#include 《nanomsg/bus.h》

#include 《nanomsg/nn.h》

#define BUF_LEN 100

char *url = “tcp://127.0.0.1:2021”;

int main(void)

{

int server_sock = 0;

char buf[BUF_LEN] = {0};

if (server_sock = nn_socket (AF_SP, NN_PAIR) 《 0)

{

printf(“create server socket failed!

”);

return -1;

}

if (nn_bind(server_sock, url) 《 0)

{

printf(“bind server sock failed!

”);

nn_close(server_sock);

return -1;

}

printf(“server init success!

”);

while (1)

{

if (nn_recv(server_sock, buf, sizeof(buf), 0) 《 0)

{

printf(“recv failed!

”);

nn_close(server_sock);

exit(EXIT_FAILURE);

}

else

{

printf(“recieve client msg: %s

”, buf);

if (nn_send(server_sock, buf, sizeof(buf), 0) 《 0)

{

printf(“send failed!

”);

nn_close(server_sock);

exit(EXIT_FAILURE);

}

}

}

nn_close(server_sock);

return 0;

}

nanomsg_client.c:

#include 《stdio.h》

#include 《pthread.h》

#include 《stdlib.h》

#include 《string.h》

#include 《unistd.h》

#include 《nanomsg/pair.h》

#include 《nanomsg/bus.h》

#include 《nanomsg/nn.h》

#define BUF_LEN 100

char *url = “tcp://127.0.0.1:2021”;

int main(void)

{

int client_sock = 0;

char buf[BUF_LEN] = {0};

if (client_sock = nn_socket (AF_SP, NN_PAIR) 《 0)

{

printf(“create server socket failed!

”);

return -1;

}

if (nn_connect(client_sock, url) 《 0)

{

printf(“connect server sock failed!

”);

nn_close(client_sock);

return -1;

}

printf(“client init success!

”);

while (1)

{

scanf(“%s”, buf);

if (nn_send(client_sock, buf, sizeof(buf), 0) 《 0)

{

printf(“send failed!

”);

nn_close(client_sock);

}

memset(buf, 0, BUF_LEN);

if (nn_recv(client_sock, buf, sizeof(buf), 0) 》 0)

{

printf(“recieve server msg: %s

”, buf);

}

memset(buf, 0, BUF_LEN);

}

nn_close(client_sock);

return 0;

}

編譯:

gcc nanomsg_server.c -o nanomsg_server -I /home/book/git_clone/nanomsg/build/nanomsg_x86_lib/include -L /home/book/git_clone/nanomsg/build/nanomsg_x86_lib/lib -lnanomsg

gcc nanomsg_client.c -o nanomsg_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:鏈接動態(tài)庫nanomsg.so。

運行測試:

運行可能會出現(xiàn)如下錯誤:

c6e21852-b20b-11eb-bf61-12bb97331649.png

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

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

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

然后繼續(xù)運行:

c70990b2-b20b-11eb-bf61-12bb97331649.png

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1434

    瀏覽量

    83785
  • IPC
    IPC
    +關(guān)注

    關(guān)注

    3

    文章

    384

    瀏覽量

    55080

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    深度剖析MAX5887:高性能DAC在通信領(lǐng)域的卓越應(yīng)用

    深度剖析MAX5887:高性能DAC在通信領(lǐng)域的卓越應(yīng)用 在當(dāng)今無線通信和信號合成的前沿領(lǐng)域,數(shù)字模擬轉(zhuǎn)換器(DAC)的性能直接決定了系統(tǒng)的整體表現(xiàn)。MAX5887作為
    的頭像 發(fā)表于 04-22 15:00 ?111次閱讀

    MAX5871:高性能RF DAC助力無線通信發(fā)展

    MAX5871:高性能RF DAC助力無線通信發(fā)展 在無線通信領(lǐng)域,高性能的射頻數(shù)模轉(zhuǎn)換器(RF DAC)對于實現(xiàn)高效、穩(wěn)定的信號傳輸至關(guān)重要。今天我們要介紹的MAX5871,就是
    的頭像 發(fā)表于 04-22 14:10 ?106次閱讀

    高性能射頻 DAC MAX5869:開啟通信設(shè)計新境界

    高性能射頻 DAC MAX5869:開啟通信設(shè)計新境界 在當(dāng)今通信技術(shù)飛速發(fā)展的時代,高性能射頻數(shù)模轉(zhuǎn)換器(DAC)在各種通信系統(tǒng)中扮演著至
    的頭像 發(fā)表于 04-22 14:05 ?92次閱讀

    AD6649 IF多樣性接收器:高性能通信解決方案

    AD6649 IF多樣性接收器:高性能通信解決方案 引言 在通信領(lǐng)域,對于高性能、低成本、小尺寸的中頻(IF)接收器的需求日益增長。AD6649作為
    的頭像 發(fā)表于 03-31 10:05 ?378次閱讀

    Mobile新手必看:快速實現(xiàn)移動通信的極簡方案

    ?對于剛接觸移動開發(fā)的程序員來說,通信功能往往是道門檻。而Mobile的出現(xiàn),讓這切變得簡單。無需掌握復(fù)雜的系統(tǒng)機(jī)制,只需引入庫并調(diào)用
    的頭像 發(fā)表于 01-26 16:57 ?416次閱讀
    Mobile<b class='flag-5'>庫</b>新手必看:快速實現(xiàn)移動<b class='flag-5'>通信</b>的極簡方案

    高性能多通道收發(fā)器AFE80xx系列:雷達(dá)與通信領(lǐng)域的新利器

    高性能多通道收發(fā)器AFE80xx系列:雷達(dá)與通信領(lǐng)域的新利器 在電子工程領(lǐng)域,高性能、寬帶寬的多通道收發(fā)器直是雷達(dá)、通信等眾多應(yīng)用的核心組
    的頭像 發(fā)表于 01-26 15:15 ?1009次閱讀

    GT-BGA-2002高性能BGA測試插座

    GT-BGA-2002高性能BGA測試插座GT-BGA-2002是Ironwood Electronics 的GT Elastomer系列的高性能BGA測試插座,專為高頻高速信號測試設(shè)計,兼容多數(shù)
    發(fā)表于 12-18 10:00

    炎核開源開放平臺上架推出OpenSparseBlas高性能稀疏計算

    在科學(xué)計算與工程仿真領(lǐng)域,高效處理大規(guī)模稀疏矩陣運算是提升整體計算效能的關(guān)鍵。為此,我們在炎核開源開放平臺上架推出 OpenSparseBlas——專為稀疏矩陣/向量計算而打造的高性能稀疏計算
    的頭像 發(fā)表于 12-15 15:18 ?1006次閱讀

    同步、GNSS 與衛(wèi)星通信的板級時鐘方案:為什么高性能 TCXO 仍是關(guān)鍵

    在高等級通信同步、GNSS 授時節(jié)點與衛(wèi)星/微波射頻模塊中,工程師常遇到同一個現(xiàn)實約束:中心參考需要極致短期穩(wěn)定與低相噪,而分布式板卡/模塊又必須控制體積、功耗與成本。 因此,“中心OCXO + 板級/模塊級高性能TCXO/VC
    的頭像 發(fā)表于 12-08 19:22 ?2475次閱讀
    同步、GNSS 與衛(wèi)星<b class='flag-5'>通信</b>的板級時鐘方案:為什么<b class='flag-5'>高性能</b> TCXO 仍是關(guān)鍵<b class='flag-5'>一</b>層

    藍(lán)牙5.0雙模通信與專業(yè)級音頻處理能力于體的高性能藍(lán)牙芯片-BP1048B2

    BP1048B2是高性能的藍(lán)牙音頻應(yīng)用處理器,集32位RISC內(nèi)核、藍(lán)牙5.0雙模通信與專業(yè)級音頻處理能力于體的高性能芯片,集成音頻編
    的頭像 發(fā)表于 12-03 10:06 ?1084次閱讀
    藍(lán)牙5.0雙模<b class='flag-5'>通信</b>與專業(yè)級音頻處理能力于<b class='flag-5'>一</b>體的<b class='flag-5'>高性能</b>藍(lán)牙芯片-BP1048B2

    推薦高性能存儲psram芯片

    智能穿戴、物聯(lián)網(wǎng)設(shè)備和端側(cè)AI應(yīng)用快速發(fā)展,PSRAM偽靜態(tài)隨機(jī)存儲器,正成為越來越多嵌入式系統(tǒng)的優(yōu)選方案,如何選擇高性能、小尺寸與低功耗的psram芯片是
    的頭像 發(fā)表于 11-18 17:24 ?703次閱讀

    華納云為游戲數(shù)據(jù)選擇高性能NVMe SSD存儲

    游戲數(shù)據(jù)對速度、可靠性和可擴(kuò)展性有極高要求。隨著在線游戲的發(fā)展,開發(fā)者越來越依賴NVMe SSD存儲來提供服務(wù)器租用和服務(wù)器托管解決方案。本文將指導(dǎo)您了解為游戲數(shù)據(jù)選擇高性能NVMe SSD存儲
    的頭像 發(fā)表于 09-30 16:03 ?1219次閱讀

    高性能低功耗雙核Wi-Fi6+BLE5.3二合

    隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,無線通信模塊在各種應(yīng)用場景中扮演著越來越重要的角色。近日,藍(lán)科迅通科技宣布推出款基于Nordic Semiconductor的Wi-Fi 6芯片nRF7002和高性能雙核
    發(fā)表于 06-28 21:42

    使用樹莓派構(gòu)建 Slurm 高性能計算集群:分步指南!

    在這篇文章中,我將分享我嘗試使用樹莓派構(gòu)建Slurm高性能計算集群的經(jīng)歷。段時間前,我開始使用這個集群作為測試平臺,來創(chuàng)建更大的、支持GPU計算的
    的頭像 發(fā)表于 06-17 16:27 ?2003次閱讀
    使用樹莓派構(gòu)建 Slurm <b class='flag-5'>高性能</b>計算集群:分步指南!

    NC403(C50)高性能噪聲二極管現(xiàn)貨庫存

    NC403(C50)高性能噪聲二極管現(xiàn)貨庫存NC403(C50)是Noisecom推出的高性能微波噪聲二極管,專為射頻和微波應(yīng)用設(shè)計。NC403(C50)采用C50封裝,適用于需要表面貼裝
    發(fā)表于 06-03 10:31
    博客| 永修县| 铅山县| 隆回县| 延寿县| 临西县| 孟连| 西乌珠穆沁旗| 远安县| 虹口区| 昭平县| 府谷县| 弋阳县| 视频| 铁岭市| 青州市| 西青区| 勃利县| 会泽县| 绥宁县| 武穴市| 龙游县| 句容市| 中阳县| 中山市| 咸宁市| 军事| 东平县| 南丹县| 巴林右旗| 平凉市| 吉林省| 开封市| 清原| 靖边县| 新野县| 德钦县| 会东县| 开封市| 福清市| 文山县|