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

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

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

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

英創(chuàng)信息技術(shù)基于嵌入式Linux的網(wǎng)絡(luò)終端應(yīng)用程序設(shè)計介紹

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-11-18 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

EM9160具有豐富的通訊接口,可以支持基于以太網(wǎng)和PPP(如GPRS/CDMA)的網(wǎng)絡(luò)應(yīng)用。本文主要介紹EM9160作為TCP客戶端方式的應(yīng)用示例:Step4_TCPClient。

TCP客戶端Socket編程流程

在利用Socket進(jìn)行TCP客戶端編程時,建立TCP連接的過程一般比較簡單,首先客戶端調(diào)用socket()函數(shù)建立流式套接字,然后調(diào)用connect()函數(shù)請求服務(wù)器端建立TCP連接,成功建立連接后即可與服務(wù)器端進(jìn)行TCP/IP數(shù)據(jù)通訊,流程如下:

TCPClient應(yīng)用示例

Step4_TCPClient是一個具有自動管理功能的TCP客戶端應(yīng)用示例。作為TCP客戶端主動和服務(wù)器端建立TCP連接的過程編程相對簡單,直接調(diào)用相關(guān)的Socket函數(shù)即可,建立TCP連接的功能封裝在CTCPClient類中。嵌入式的應(yīng)用場合大多是處于長期運行無人值守的狀態(tài),可能會遇到需要一直保持TCP客戶端連接的情況,Step4_TCPClient例程基于這種需求,專門封裝了一個CTCPClientManager管理類對TCPClient的連接進(jìn)行自動管理,包括啟動建立TCP的客戶端連接、查詢TCP連接的狀態(tài)、添加多個TCP客戶端連接等功能。

CTCPClient類

CTCPClient類定義在TCPClient.H文件下,該類提供了4個公共函數(shù),以及一個數(shù)據(jù)通訊線程,調(diào)用該類中的相關(guān)函數(shù)與TCP服務(wù)器端建立連接。

class CTCPClient

{

private:

pthread_t m_thread; //通訊線程標(biāo)識符ID

//數(shù)據(jù)通訊處理線程函數(shù)

static int SocketThreadFunc( void*lparam );

public:

// TCP通訊Socket

int m_sockfd;

int m_sockclose;

int m_ExitThreadFlag;

//遠(yuǎn)程主機(jī)IP地址

char m_remoteHost[255];

//遠(yuǎn)程主機(jī)端口

int m_port;

char RecvBuf[1500];

int m_nRecvLen;

public:

CTCPClient();

virtual ~CTCPClient( );

//打開創(chuàng)建客戶端socket

int Open( char* ServerIP, int ServerPort );

//關(guān)閉客戶端socket

int Close( );

//與服務(wù)器端建立連接 并創(chuàng)建數(shù)據(jù)通訊處理線程

int Connect();

//向服務(wù)器端發(fā)送數(shù)據(jù)

int SendData( char * buf , int len);

};

Open函數(shù)執(zhí)行創(chuàng)建打開socket操作,并設(shè)置遠(yuǎn)端TCP服務(wù)器的IP和端口。

Connect函數(shù)調(diào)用connect( )與遠(yuǎn)端TCP服務(wù)器建立連接,調(diào)用select( )等待TCP連接的建立,TCP連接建立成功,則創(chuàng)建TCP數(shù)據(jù)通訊處理線程。

SocketThreadFunc函數(shù)是實現(xiàn)TCP連接數(shù)據(jù)通訊的核心代碼,在該函數(shù)中調(diào)用select( ),等待TCP連接的通訊數(shù)據(jù),對于接收的TCP連接數(shù)據(jù)的處理也是在該函數(shù)中實現(xiàn),在本例程中處理為簡單的數(shù)據(jù)回發(fā),用戶可結(jié)合實際的應(yīng)用修改此處代碼。流程如下:

CTCPClientManager類

TCP客戶端連接定義為四個狀態(tài):

enum CONNSTATE{ csWAIT, csINIT, csCLOSED, csOPEN };其中csOPEN表明TCP客戶端連接建立。

CTCPClientManager所封裝的功能函數(shù)就是根據(jù)連接的各個狀態(tài)對TCP客戶端連接進(jìn)行管理,CTCPClientManager類定義在TCPClientManager.H文件下。

class CTCPClientManager

{

private:

// TCPClient連接管理線程

static int TCPClientThreadFunc( void* lparam );

public:

TCPCLIENT_INFO m_TCPClientInfo[TCPCLIENT_MAX_NUM];

pthread_t m_thread[TCPCLIENT_MAX_NUM];

int m_nTCPClientNum;

public:

CTCPClientManager( );

~CTCPClientManager();

//添加TCP客戶端連接對象,輸入?yún)?shù)為TCP服務(wù)器的IP和端口

int AddTCPClientObject( char* pHostIP, int nHostPort );

//刪除所有TCP客戶端連接對象

int DeleteAllTCPClient( );

//設(shè)置TCP客戶端連接對象為csINIT狀態(tài)

int Open( int Idx );

//獲取TCP客戶端連接狀態(tài)

int GetTCPClientState( int Idx );

//啟動TCPClient連接管理操作,并創(chuàng)建TCPClient連接管理線程

int Start( );

//關(guān)閉TCPClient連接管理操作

int Stop( );

};

TCPClientThreadFunc函數(shù)是實現(xiàn)對TCP連接狀態(tài)管理操作的核心代碼,由于Linux下sleep的最小單位為秒,對于毫秒級的延時等待,在該函數(shù)中利用調(diào)用select( )設(shè)置相關(guān)的時間參數(shù)來實現(xiàn)。流程如下:

CTCPClientManager類的調(diào)用

CTCPClientManager類的具體使用過程:首先調(diào)用類中定義AddTCPClientObject加載TCP連接對象,然后調(diào)用類中定義Start函數(shù)來啟動TCP連接自動管理線程,Open函數(shù)將TCP連接狀態(tài)設(shè)置為csINIT狀態(tài)。本例程中主循環(huán)的操作為每隔1s查詢TCPClient連接的狀態(tài),如果狀態(tài)為csWait,程序調(diào)用Open函數(shù)將其設(shè)置為csINIT狀態(tài),則TCPC連接管理線程將自動進(jìn)行與TCP服務(wù)器端建立連接的操作。

以下為Step4_TCPClient.cpp中的相關(guān)代碼。

class CTCPClientManager TCPClntManager;

int main()

{

int i1, i2, i3;

//添加一個TCP客戶端連接對象

TCPClntManager.AddTCPClientObject( ‘192.168.201.121’, 1001 );

//啟動TCPClient連接管理操作,并創(chuàng)建TCPClient連接管理線程

TCPClntManager.Start();

for( i1=0; i1 {

//設(shè)置TCP客戶端連接初始狀態(tài),連接管理線程將自動進(jìn)行TCP的連接操作

TCPClntManager.Open(i1);

}

for(i1=0; i1《10000; i1++)

{

sleep(1);

for( i2=0; i2 {

// 查詢TCP客戶端連接狀態(tài)

i3 = TCPClntManager.GetTCPClientState(i2);

printf( ‘TCP Connect%d State: %d \n’, i2+1, i3 );

if( i3==0 )

{

//設(shè)置TCP客戶端連接初始狀態(tài),連接管理線程將自動進(jìn)行TCP連接操作

TCPClntManager.Open( i2 );

}

}

}

return 0;

}

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

    關(guān)注

    88

    文章

    11826

    瀏覽量

    219620
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6107

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Linux 下開發(fā)嵌入式必備命令速查表

    嵌入式開發(fā)中,Linux系統(tǒng)幾乎成為必備的開發(fā)環(huán)境。不管你是在做STM32、RaspberryPi、還是基于ARM的板子,熟練掌握Linux命令不僅能加快開發(fā)效率,還能讓你在調(diào)試、交叉編譯、文件
    的頭像 發(fā)表于 01-19 09:06 ?1063次閱讀
    <b class='flag-5'>Linux</b> 下開發(fā)<b class='flag-5'>嵌入式</b>必備命令速查表

    如何在Zynq UltraScale+ MPSoC平臺上通過JTAG啟動嵌入式Linux鏡像

    在之前文章中,我們介紹了如何使用 XSCT 工具通過 JTAG 在 Zynq SoC 上啟動嵌入式 Linux 鏡像(從 JTAG 啟動 Zynq-7000 嵌入式
    的頭像 發(fā)表于 01-13 11:45 ?5118次閱讀

    什么是嵌入式應(yīng)用開發(fā)?

    。 · ?醫(yī)療設(shè)備?:如心電圖儀、血壓計等。 開發(fā)工具和技術(shù) 嵌入式開發(fā)過程中常用的工具包括: · ?集成開發(fā)環(huán)境(IDE)?:用于編寫、編譯和調(diào)試代碼。 · ?編譯器?:將高級語言代碼轉(zhuǎn)換為機(jī)器語言
    發(fā)表于 01-12 16:13

    arm嵌入式主板優(yōu)缺點

    Windows CE、Linux等主流的嵌入式操作系統(tǒng)。   ARM的優(yōu)點   一、高可靠性、高穩(wěn)定性:在工業(yè)控制領(lǐng)域,性能穩(wěn)定可靠是自動控制基本的要求,ARM嵌入式主板有著很特殊的優(yōu)勢。第一
    發(fā)表于 01-08 07:08

    從小白到大牛:Linux嵌入式系統(tǒng)開發(fā)的完整指南

    編寫簡單的 Shell 腳本(如自動備份文件、批量編譯程序)鞏固技能。? 二、能力進(jìn)階:攻克核心技術(shù)模塊? 入門后需聚焦嵌入式 Linux 的核心
    發(fā)表于 12-16 10:42

    ARM嵌入式這樣學(xué)

    )話題大熱,Arm也推出神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)軟件 Arm NN,可在基于Arm的高能效平臺上輕松構(gòu)建和運行機(jī)器學(xué)習(xí)應(yīng)用程序,未來嵌入式行業(yè)也將不斷革新,嵌入式市場有所可期。 據(jù)知乎某15
    發(fā)表于 12-04 07:48

    C語言在嵌入式開發(fā)中的應(yīng)用

    語言可以確保實時系統(tǒng)中的任務(wù)能夠在規(guī)定的時間內(nèi)完成,保證系統(tǒng)的穩(wěn)定性和可靠性。 4、嵌入式網(wǎng)絡(luò)編程 隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,嵌入式設(shè)備的聯(lián)網(wǎng)需求日益增長。C 語言提供了豐富的
    發(fā)表于 11-21 08:09

    嵌入式開發(fā)的關(guān)鍵點介紹

    嵌入式開發(fā)在現(xiàn)代科技中扮演著非常重要的角色。隨著物聯(lián)網(wǎng)的發(fā)展,嵌入式系統(tǒng)的需求也越來越大。嵌入式開發(fā)不僅需要開發(fā)人員具備深入的硬件知識和編程經(jīng)驗,還需要不斷學(xué)習(xí)新的技術(shù)和工具,以滿足不
    發(fā)表于 11-13 08:12

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通過學(xué)習(xí)嵌入式技術(shù)提升就業(yè)競爭力,需重點掌握C語言、嵌入式硬件架構(gòu)、RTOS/Linux開發(fā)、通信協(xié)議四
    發(fā)表于 10-21 16:25

    PCB嵌入式功率模塊介紹

    電子發(fā)燒友網(wǎng)站提供《PCB嵌入式功率模塊介紹.docx》資料免費下載
    發(fā)表于 09-09 16:19 ?4次下載

    2025嵌入式行業(yè)現(xiàn)狀如何?

    關(guān)鍵型與非關(guān)鍵型系統(tǒng)隔離需求。 2.4 邊緣計算與云協(xié)同 邊緣設(shè)備能力提升:嵌入式Linux系統(tǒng)網(wǎng)關(guān)支持Matter協(xié)議,實時處理溫濕度、光照等數(shù)據(jù),通過本地AI模型實現(xiàn)節(jié)能優(yōu)化。 低功耗設(shè)計:恩智浦
    發(fā)表于 08-25 11:34

    怎么結(jié)合嵌入式,Linux,和FPGA三個方向達(dá)到一個均衡發(fā)展?

    嵌入式領(lǐng)域,不少人都懷揣著讓嵌入式、Linux 和 FPGA 三個方向?qū)崿F(xiàn)均衡發(fā)展的夢想,然而實踐中卻面臨諸多挑戰(zhàn)。就像備受矚目的全棧工程師稚暉君,他從大學(xué)玩單片機(jī)起步,憑借將智能算法融入
    的頭像 發(fā)表于 06-25 10:08 ?1058次閱讀
    怎么結(jié)合<b class='flag-5'>嵌入式</b>,<b class='flag-5'>Linux</b>,和FPGA三個方向達(dá)到一個均衡發(fā)展?

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    :使用Linux操作系統(tǒng),可以運行各種復(fù)雜的應(yīng)用程序和驅(qū)動程序。 4. 資源需求 : 單片機(jī)嵌入式 :對硬件資源的需求較低,通常只需要一個單片機(jī)芯片,內(nèi)存和存儲空間較小。
    發(fā)表于 06-20 09:46

    運行在嵌入式系統(tǒng)上的emApps

    在當(dāng)今快節(jié)奏的嵌入式系統(tǒng)世界中,靈活性和適應(yīng)性是嵌入式系統(tǒng)實現(xiàn)的關(guān)鍵。SEGGER推出了其最新創(chuàng)新:Embedded apps(emApps)應(yīng)用,類似于手機(jī)上的應(yīng)用程序,可以運行在嵌入式
    的頭像 發(fā)表于 06-18 09:53 ?1084次閱讀
    運行在<b class='flag-5'>嵌入式</b>系統(tǒng)上的emApps

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國家推動IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國家網(wǎng)絡(luò)
    的頭像 發(fā)表于 06-13 10:06 ?9691次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略
    海丰县| 乌恰县| 武鸣县| 大庆市| 北流市| 阜南县| 黄浦区| 乌拉特中旗| 舟山市| 沛县| 尚志市| 苍溪县| 出国| 利津县| 蒙山县| 琼结县| 济南市| 赫章县| 日土县| 富民县| 宝鸡市| 马山县| 嘉祥县| 广东省| 绥江县| 马山县| 通辽市| 贵阳市| 长春市| 和顺县| 资兴市| 长白| 威海市| 西宁市| 临颍县| 台中市| 新宾| 石景山区| 金湖县| 霍山县| 建湖县|