色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

英創信息技術ARM Linux環境下多連接TCP服務器的編程概述

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

EM9160的主要功能之一就是作為網絡平臺,工控領域中比較常見的網絡應用是利用TCP/IP協議進行數據通訊。在網絡應用中,通常都實現多連接的應用需求,本文主要介紹EM9160作為TCP服務器方式的應用——支持多連接的TCP服務器示例程序:Step3_TCPServer。

TCP Socket編程

在進行網絡應用程序開發方面大多是采用套接字Socket技術,嵌入式Linux的系統平臺上也是如此。Socket編程的基本函數有

socket( )、bind( )、listen( )、accept( )、send( )、sendto( )、recv( )、recvfrom( )、connect( )等。

支持多連接的TCP服務器應用示例

Step3_TCPServe是一個支持多個客戶端的連接TCPServer示例,該例程采用了面向對象的C++編程,創建了CTCPServer和CTCPCustom兩個類,其中CTCPServer類負責偵聽客戶端的連接,一旦有客戶端請求連接,它就負責接受此連接,并創建一個新的CTCPCustom類對象與客戶端進行通訊,然后CTCPServer類接著監聽客戶端的連接請求,其流程如下:

CTCPServer類

CTCPServer類定義在TCPServer.h文件下,該類提供了3個公共函數,以及一個Socket偵聽線程,公共的函數中Open( )、Close( )用于啟動或是關閉TCP服務。

class CTCPServer

{

private:

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

//Socket偵聽線程

static int SocketListenThread( void*lparam );

public:

int m_sockfd; //TCP服務監聽socket

int m_ExitThreadFlag;

int m_LocalPort; //設置服務端口

CTCPServer();

virtual ~CTCPServer();

int Open(); // 打開TCP服務

int Close(); // 關閉TCP服務

// 刪除一個客戶端對象連接 釋放資源

int RemoveClientSocketObject( void* lparam );

};

在Open( )函數中實現了打開套接字,將套接字設置為偵聽套接字,并創建偵聽客戶端連接線程。在Linux應用程序中創建線程的方法在《嵌入式Linux串口通訊的C++設計》中有相關的說明,在該例程中也是采取的同樣方式。

SocketListenThread函數中調用select( )偵聽客戶端的TCP連接,流程如下:

同樣的需要注意的是,select( )函數中的時間參數在Linux下每次都需要重新賦值,否則會自動歸0。CTCPServer類的實現代碼請參見TCPServer.CPP文件。

CTCPCustom類

CTCPCustom的定義在TCPCustom.h文件下。

class CTCPCustom

{

public:

CTCPCustom();

virtual ~CTCPCustom();

public:

char m_RemoteHost[100]; //遠程主機IP地址

int m_RemotePort; //遠程主機端口號

int m_socketfd; //通訊socket

int m_SocketEnable;

int m_ExitThreadFlag;

CTCPServer* m_pTCPServer;

private:

// 通訊線程函數

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

static void* SocketDataThread(void* lparam); //TCP連接數據通訊線程

public:

int RecvLen;

char RecvBuf[1500];

// 打開socket,創建通訊線程

int Open(void* lparam);

// 關閉socket,關閉線程,釋放Socket資源

int Close();

// 向客戶端發送數據

int SendData(const char * buf , int len );

};

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

CTCPServer類的調用

CTCPSerer類的具體使用也比較簡單,主要是調用對于類中定義Open函數來啟動各個TCP通訊線程,反而在主循環中需要實現的功能代碼不多了,在本例程中僅僅為每隔1s輸出提示信息。以下為Step3_TCPServer.cpp中的相關代碼。

class CTCPServer m_TCPServer;

int main()

{

int i1;

printf( ‘Step3_TCPTest V1.0\n’ );

// 給TCP服務器端口賦值

m_TCPServer.m_LocalPort = 1001;

// 創建Socket,啟動TCP服務器偵聽線程

i1 = m_TCPServer.Open( );

if( i1《0 )

{

printf( ‘TCP Server start fail\n’);

return -1;

}

// 進入主循環,主要是負責管理工作

for( i1=0; i1《10000;i1++) //實際應用時,可設置為無限循環

{

sleep(1);

printf( ‘%d \n’, i1+1);

}

m_TCPServer.Close( );

return 0;

}

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

    關注

    87

    文章

    11342

    瀏覽量

    210147
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6086

    瀏覽量

    35529
收藏 人收藏

    評論

    相關推薦

    支持Linux高級客戶自行移植內核

    上市)  該項服務具體說明和實施流程參見:支持客戶進行Linux移植  需要該服務的客戶需與簽訂技術
    發表于 01-18 13:52

    Eclipse支持在線調試Linux應用程序

    調試linux應用程序》進行下載,也可以直接聯系我們。成都信息技術有限公司http://www.emtronix.com
    發表于 03-24 16:28

    串口WiFi方案使用說明

    上的編程方法》,《串口WiFi在WinCE工控主板上的編程方法》。成都信息技術有限公司http://www.emtronix.com
    發表于 04-05 15:52

    采用嵌入式處理PXA270與ARM-Linux相結合的Web服務器構建

    對Intenet技術的發展有重要意義。本文提出一種基于ARM-Linux操作系統的嵌入式Web服務器的設計方法,并給出相應的軟硬件設計,并利用Socket編程和CGI程序完成整個Web
    發表于 04-11 07:00

    如何使用tcp連接自己搭建的服務器

    大家好,我想使用tcp連接自己搭建的服務器 這個服務器不是本地local的IP4而是有域名的,類似espslr.*****.com,端口是8591 我使用examples\protoc
    發表于 03-07 06:58

    信息技術ARM9工控主板WinCE應用程序遠程控制應用

    公司推出的ARM9嵌入式工控主板產品系列,均預裝了正版的WinCE5.0操作系統。微軟的WINCE實時多任務操作系統是嵌入式領域的主流操作系統之一,它包括了以TCP/IP為特色的完
    的頭像 發表于 11-04 09:28 ?1782次閱讀

    信息技術ARM9主板上運行案例解析

    今年(2009年)的市場活動中,為了讓客戶更好地完成產品應用開發,向第一次購買
    的頭像 發表于 11-12 10:20 ?1475次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM</b>9主板上運行案例解析

    信息技術工控主板網絡變壓連接方法

    在上一篇介紹主板網絡變壓連接方法的文章中(《工控主板網絡變壓
    的頭像 發表于 01-14 14:09 ?3705次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>工控主板網絡變壓<b class='flag-5'>器</b><b class='flag-5'>連接</b>方法

    信息技術Qt開發環境的搭建介紹

    Linux系統中搭建Qt應用程序的開發環境。這里采用的Linux系統為Ubuntu12.04,交叉工具鏈為arm-none-linux-gnueabi(版本號為4.4.1),Qt的
    的頭像 發表于 01-17 09:12 ?1607次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>Qt開發<b class='flag-5'>環境</b>的搭建介紹

    信息技術Linux工控主板支持3G網卡介紹

    (3rd-generation,第三代移動通訊技術)運用的普及,公司的工控主板同樣對3G無線通訊做了完備的支持。本文就以目前很常用的華為3G網卡770W和E261為例,介紹
    的頭像 發表于 01-17 09:49 ?2246次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>Linux</b>工控主板支持3G網卡介紹

    信息技術高性能FTP服務器Linux工控主板上的移植

    ftp是TCP/IP網絡上兩臺設備傳送文件的協議,用戶在嵌入式Linux系統的開發中,有時候需要搭建一個ftp服務器,以便實現對設備的訪問和文件傳輸等功能。
    的頭像 發表于 01-17 10:12 ?1966次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>高性能FTP<b class='flag-5'>服務器</b><b class='flag-5'>Linux</b>工控主板上的移植

    信息技術WindowsSTM32單片機eclipse編譯環境搭建簡介

    公司開發的ETA321多功能擴展模塊,是基于STM32F103RC單片機設計的面向實時控制處理單元模塊。 ETA321模塊作為客戶端,使用USB與公司的
    的頭像 發表于 02-06 11:08 ?1563次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>Windows<b class='flag-5'>下</b>STM32單片機eclipse編譯<b class='flag-5'>環境</b>搭建簡介

    Linux下網絡編程TCP并發服務器TCP客戶端程序免費下載

    本文檔的主要內容詳細介紹的是Linux下網絡編程TCP并發服務器TCP客戶端程序免費下載
    發表于 01-08 15:12 ?9次下載
    <b class='flag-5'>Linux</b>下網絡<b class='flag-5'>編程</b><b class='flag-5'>TCP</b>并發<b class='flag-5'>服務器</b>和<b class='flag-5'>TCP</b>客戶端程序免費下載

    LinuxTCP網絡編程-創建服務器與客戶端

    這篇文章介紹在Linux的socket編程,完成TCP服務器、客戶端的創建,實現數據通信。
    的頭像 發表于 08-14 09:26 ?2531次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>下</b><b class='flag-5'>TCP</b>網絡<b class='flag-5'>編程</b>-創建<b class='flag-5'>服務器</b>與客戶端

    單臺服務器支持的TCP并發連接

    總之,65535只是Linux系統中可使用端口port數量的上限,端口port數量與TCP連接數量并非完全一一對應的關系,服務器支持的TCP
    的頭像 發表于 11-06 19:36 ?1677次閱讀
    主站蜘蛛池模板: 国内一级一级毛片a免费 | 嫩草影院精品视频在线观看 | 久久青草免费91线频观看站街 | 国产做国产爱免费视频 | 国产午夜视频在线 | FREE乌克兰嫩交HD | 大睾丸内射老师 | 日韩欧美高清一区 | 一个人的免费完整在线观看HD | 国偷自产视频一区二区99 | 76人遣返航班上71人呈阳性 | 男人J桶进男人屁股过程 | 亚洲精品综合在线影院 | 国产精品久久人妻无码网站一区无 | 加勒比一本之道高清视频在线观看 | 双手绑在床头调教乳尖 | 亚洲最大在线视频 | 羞羞答答的免费视频在线观看 | 小寡妇水真多好紧 | 666永久视频在线 | RUNAWAY韩国动漫免费网 | 韩国无遮羞禁动漫在线观看96 | 99久久精品国产交换 | 和搜子的日子 在线观看 | 少妇的肉体AA片免费观看 | 国产又色又爽又刺激在线播放 | 爽爽窝窝午夜精品一区二区 | 92国产精品午夜免费福利视频 | 动漫美女被到爽了流 | 亚洲国产在线精品国自产拍五月 | 色宅男午夜电影网站 | 日本高清无卡码一区二区久久 | 欧美日韩亚洲中字二区 | 趁老师睡着吃她的奶水 | 特级淫片大乳女子高清视频 | 91区国产福利在线观看午夜 | 国产乱国产乱老熟300部视频 | www精品一区二区三区四区 | 熟妇少妇任你躁在线无码 | 野花日本高清在线观看免费吗 | 亚洲精品国偷拍自产在线 |