新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM7單片機+RTL8019嵌入式TCP_IP協議棧使用分析

        ARM7單片機+RTL8019嵌入式TCP_IP協議棧使用分析

        作者: 時間:2012-12-05 來源:網絡 收藏

        WEB服務器程序清單
        /*****************************************************
        * 名稱:TCP_TEST()
        * 功能:設置TCP模塊
        * 入口:無
        * 出口: 無
        *********************************************************/

        void TCP_SETUP(void)
        {
        /*設置本地TCP服備器的IP地址*/
        TCP_serveraddr.sin_family = 0;
        TCP_serveraddr.sin_addr[0] = MY_IP_ADD[0];
        TCP_serveraddr.sin_addr[1] = MY_IP_ADD[1];
        TCP_serveraddr.sin_addr[2] = MY_IP_ADD[2];
        TCP_serveraddr.sin_addr[3] = MY_IP_ADD[3];
        TCP_serveraddr.sin_port = 80;
        /*將TCP server的IP地址與SOCKET綁定*/
        t = socket(0,0,TCP_PROTOCOL);
        iii=bind(t,TCP_serveraddr,sizeof(TCP_serveraddr));
        iii=listen(t,4);

        }
        /********************************************************
        * 名稱:TCP_TEST()
        * 功能:TCP打開網頁測試
        * 入口:無
        * 出口: 無
        ********************/
        void TCP_TEST(void)
        {
        temp = accept(t,TCP_clientaddr,iii);/*accept網頁獲取請求*/

        if(temp != 0xffff)
        { templen = recv(temp,TCP_rec_buff,1024,0);
        if(TCP_rec_buff[5] == ' ')
        { send(temp,httpweb,169,0); /*發送http網頁*/
        send(temp,web,395,0);

        }
        else if(TCP_rec_buff[5] == '1')
        {
        send(temp,httpgif,169,0); /*發送GIF,BMP圖片背景*/
        send(temp,bmp,442,0);
        }
        close(temp);
        }
        }

        2)簡單UDP服務器—通過函數UDP_TEST()完成設置本地UDP服備器的IP地址和遠端口服務器的IP地址, 其過程如下:
        1.調用SOCKET API函數socket(0,0,TCP_PROTOCOL)分配一個SOCKET
        2.調用SOCKET API函數bind()將UDP server的IP地址與SOCKET綁定,將調用SOCKET API函數enable_a_port_listen(1025)起動監聽。
        3.函數UDP_TEST()通過函數recfrom()接收UDP數據報,接收到的UDP數據報調用SOCKET API函數sendto()回傳遠程服務器。
        UDP服務器程序清單

        * 名稱:UDP_SETUP()
        * 功能:設置UDP模塊
        * 入口:無
        * 出口: 無
        ***********************************************************/
        void UDP_SETUP(void)
        {
        serveraddr.sin_family = 0; /*設置遠端服務器的IP地址*/
        serveraddr.sin_addr[0] = 192;
        serveraddr.sin_addr[1] = 168;
        serveraddr.sin_addr[2] = 0;
        serveraddr.sin_addr[3] = 1;
        serveraddr.sin_port = 1026;
        s = socket(0,0,UDP_PROTOCOL);
        clientaddr.sin_family = 0; /*設置本地UDP客戶端的IP地址*/
        clientaddr.sin_addr[0] = MY_IP_ADD[0];
        clientaddr.sin_addr[1] = MY_IP_ADD[1];
        clientaddr.sin_addr[2] = MY_IP_ADD[2];
        clientaddr.sin_addr[3] = MY_IP_ADD[3];
        clientaddr.sin_port = 1025;
        /*將本地IP地址與SOCKET綁定*/
        iii=bind(s,clientaddr,sizeof(clientaddr));
        enable_a_port_listen(1025);
        }

        /************************************************************
        * 名稱:UDP_TEST()
        * 功能:UCP數據報收發測試
        * 入口:無
        * 出口: 無
        *************************************************************/
        void UDP_TEST(void)
        {
        /*接收UDP數據報*/
        len = recvfrom(s,rec_buff,400,0,serveraddr,iii);
        if(len > 0)
        { /*將接收到的UDP數據報發送回服務器端*/
        sendto(s,rec_buff,len,0,serveraddr,iii);
        }
        }

        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        tcp/ip相關文章:tcp/ip是什么



        上一頁 1 2 下一頁

        關鍵詞: ARM7 RTL8019 協議棧

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 凭祥市| 清远市| 大理市| 依兰县| 巴林右旗| 长宁县| 镇平县| 惠东县| 南充市| 祁连县| 安国市| 铁岭市| 沁源县| 沾化县| 洞口县| 定陶县| 石狮市| 财经| 南溪县| 建湖县| 台北县| 竹溪县| 密山市| 周至县| 长宁区| 定日县| 阿尔山市| 洛南县| 霍州市| 西林县| 涿州市| 富裕县| 宁乡县| 尼木县| 肥乡县| 互助| 松溪县| 衡东县| 大余县| 新邵县| 商丘市|