女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

英創信息技術基于嵌入式Linux的網絡終端應用程序設計介紹

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2019-11-18 09:40 ? 次閱讀

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

TCP客戶端Socket編程流程

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

TCPClient應用示例

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

CTCPClient類

CTCPClient類定義在TCPClient.H文件下,該類提供了4個公共函數,以及一個數據通訊線程,調用該類中的相關函數與TCP服務器端建立連接。

class CTCPClient

{

private:

pthread_t m_thread; //通訊線程標識符ID

//數據通訊處理線程函數

static int SocketThreadFunc( void*lparam );

public:

// TCP通訊Socket

int m_sockfd;

int m_sockclose;

int m_ExitThreadFlag;

//遠程主機IP地址

char m_remoteHost[255];

//遠程主機端口

int m_port;

char RecvBuf[1500];

int m_nRecvLen;

public:

CTCPClient();

virtual ~CTCPClient( );

//打開創建客戶端socket

int Open( char* ServerIP, int ServerPort );

//關閉客戶端socket

int Close( );

//與服務器端建立連接 并創建數據通訊處理線程

int Connect();

//向服務器端發送數據

int SendData( char * buf , int len);

};

Open函數執行創建打開socket操作,并設置遠端TCP服務器的IP和端口。

Connect函數調用connect( )與遠端TCP服務器建立連接,調用select( )等待TCP連接的建立,TCP連接建立成功,則創建TCP數據通訊處理線程。

SocketThreadFunc函數是實現TCP連接數據通訊的核心代碼,在該函數中調用select( ),等待TCP連接的通訊數據,對于接收的TCP連接數據的處理也是在該函數中實現,在本例程中處理為簡單的數據回發,用戶可結合實際的應用修改此處代碼。流程如下:

CTCPClientManager類

TCP客戶端連接定義為四個狀態:

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

CTCPClientManager所封裝的功能函數就是根據連接的各個狀態對TCP客戶端連接進行管理,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客戶端連接對象,輸入參數為TCP服務器的IP和端口

int AddTCPClientObject( char* pHostIP, int nHostPort );

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

int DeleteAllTCPClient( );

//設置TCP客戶端連接對象為csINIT狀態

int Open( int Idx );

//獲取TCP客戶端連接狀態

int GetTCPClientState( int Idx );

//啟動TCPClient連接管理操作,并創建TCPClient連接管理線程

int Start( );

//關閉TCPClient連接管理操作

int Stop( );

};

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

CTCPClientManager類的調用

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

以下為Step4_TCPClient.cpp中的相關代碼。

class CTCPClientManager TCPClntManager;

int main()

{

int i1, i2, i3;

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

TCPClntManager.AddTCPClientObject( ‘192.168.201.121’, 1001 );

//啟動TCPClient連接管理操作,并創建TCPClient連接管理線程

TCPClntManager.Start();

for( i1=0; i1 {

//設置TCP客戶端連接初始狀態,連接管理線程將自動進行TCP的連接操作

TCPClntManager.Open(i1);

}

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

{

sleep(1);

for( i2=0; i2 {

// 查詢TCP客戶端連接狀態

i3 = TCPClntManager.GetTCPClientState(i2);

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

if( i3==0 )

{

//設置TCP客戶端連接初始狀態,連接管理線程將自動進行TCP連接操作

TCPClntManager.Open( i2 );

}

}

}

return 0;

}

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

    關注

    87

    文章

    11466

    瀏覽量

    212852
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6097

    瀏覽量

    36143
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux的作用

    。 2、嵌入式系統:Linux可以被嵌入到各種嵌入式設備中,如智能路由器、智能電視等。它提供了一個靈活的平臺,可以根據設備的需求進行定制和優化。 3、個人電腦操作系統:
    發表于 04-04 01:57

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-Linux設備驅動的分類

    內核模塊嵌入Linux內核中,位于內核空間。它們直接與內核進行交互,通過內核提供的接口與硬件設備進行通信和控制。用戶空間的應用程序通過系統調用和設備文件接口與設備驅動進行交互。設備驅動負責接收來自用戶空間的請求,并將其轉化為相
    發表于 03-12 10:20

    婦女節|從程序設計的先驅到嵌入式系統的革新者!

    領域的技術高管占比仍不足15%,這僅是科技行業整體高管性別平等水平的一半。盡管如此,女性在這一領域的影響力絲毫未減。從程序設計的先驅到嵌入式系統的革新者,數不勝數
    的頭像 發表于 03-08 09:55 ?292次閱讀
    婦女節|從<b class='flag-5'>程序設計</b>的先驅到<b class='flag-5'>嵌入式</b>系統的革新者!

    嵌入式工程師都在找的【Linux內核調試技術】建議收藏!

    嵌入式系統的開發中,Linux內核調試是一個至關重要的環節。 隨著處理器技術的不斷進步和嵌入式領域的蓬勃發展,掌握有效的內核調試技術成為
    發表于 11-28 15:37

    嵌入式linux開發的基本步驟有哪些?

    嵌入式Linux開發是一個復雜的過程,涉及到硬件選擇、操作系統移植、驅動開發、應用程序開發等多個方面。以下是嵌入式Linux開發的基本步驟,
    的頭像 發表于 09-02 09:11 ?1103次閱讀

    嵌入式linux開發板怎么操作

    嵌入式Linux開發板是一種基于Linux操作系統的嵌入式系統開發平臺。它通常包括一個處理器、內存、存儲器、輸入/輸出接口等硬件組件,以及一個基于L
    的頭像 發表于 09-02 09:09 ?701次閱讀

    嵌入式linux開發板芯片的工作原理

    嵌入式Linux開發板是一種基于Linux操作系統的嵌入式系統開發平臺,它廣泛應用于工業控制、智能家居、智能交通、醫療設備等領域。 嵌入式
    的頭像 發表于 09-02 09:07 ?728次閱讀

    C28x嵌入式應用程序二進制接口

    電子發燒友網站提供《C28x嵌入式應用程序二進制接口.pdf》資料免費下載
    發表于 08-31 09:39 ?0次下載
    C28x<b class='flag-5'>嵌入式</b><b class='flag-5'>應用程序</b>二進制接口

    開啟全新AI時代 智能嵌入式系統快速發展——“第六屆國產嵌入式操作系統技術與產業發展論壇”圓滿結束

    。 湖南大學教授、嵌入式網絡計算湖南省重點實驗室主任謝國琪做了“國產異構計算平臺的‘五合一’智能計算開發創新實踐”的專題報告。謝國琪介紹國產異構計算平臺技術特點,以及在國產異構計算平
    發表于 08-30 17:24

    飛凌嵌入式技術創新日(深圳站)圓滿落幕

    2024年8月26日下午,飛凌嵌入式技術創新日深圳站在深圳威尼斯迪格酒店盛大舉行,此次活動匯聚了近200位嵌入式技術領域的專家和企業代表,
    的頭像 發表于 08-30 15:42 ?568次閱讀
    飛凌<b class='flag-5'>嵌入式</b><b class='flag-5'>技術</b>創新日(深圳站)圓滿落幕

    MSP430嵌入式應用程序二進制接口

    電子發燒友網站提供《MSP430嵌入式應用程序二進制接口.pdf》資料免費下載
    發表于 08-30 11:43 ?0次下載
    MSP430<b class='flag-5'>嵌入式</b><b class='flag-5'>應用程序</b>二進制接口

    C6000嵌入式應用程序二進制接口

    電子發燒友網站提供《C6000嵌入式應用程序二進制接口.pdf》資料免費下載
    發表于 08-29 14:52 ?0次下載
    C6000<b class='flag-5'>嵌入式</b><b class='flag-5'>應用程序</b>二進制接口

    飛凌嵌入式技術創新日(深圳站)精彩回顧

    工的分享,則更加側重于嵌入式技術的研發和創新,為與會者提供了新的問題解決思路;最后,粵港澳大灣區國中心技術專家的溫老師 介紹了openEu
    發表于 08-28 09:06

    學習hypervisor嵌入式產品安全設計

    第一部分(第1~2章)介紹Hypervisor基礎,涵蓋虛擬化技術與實現、主流的嵌入式Hypervisor產品,以及基于分離內核的嵌入式Hypervisor等內容。第二部分(第3~12
    發表于 08-25 09:11

    嵌入式機電一體化系統設計與實現》讀后感

    的應用。曾教授詳細講解了如何為嵌入式系統構建Linux環境,以及在Linux中進行程序設計的方法和技巧。通過這些內容,我不僅掌握了Linux
    發表于 08-21 08:45