国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

迅為iTOP-i.MX6ULL開發(fā)板-網(wǎng)絡(luò)通信-套字節(jié)TCP

發(fā)布時(shí)間:2021-6-18 10:52    發(fā)布者:落風(fēng)
本章節(jié)使用的資料已經(jīng)放到了開發(fā)板網(wǎng)盤資料中,路徑為:“11_Linux 系統(tǒng)開發(fā)進(jìn)階\77_章節(jié)_網(wǎng)絡(luò)通信-套字節(jié) TCP 使用資料”。
iTOP-IMX6ULL 實(shí)現(xiàn)基于 TCP 的 socket 編程。
在 linux 下,網(wǎng)絡(luò)資源非常豐富,底層的東西不需要去管,只需要知道怎么實(shí)現(xiàn)最終需要的功能即可。
77.1 實(shí)驗(yàn)操作
TCP 是一種面向連接的、可靠的、基于 IP 的傳輸層協(xié)議。通過 TCP 可以保證傳送的數(shù)據(jù)的正確性。
Linux 下網(wǎng)絡(luò)通信程序基本上都是采用 socket 的方式。socket 起源于 Unix,而 Unix/Linux 基本哲學(xué)之一就是“一切皆文件”,都可以用“打開 open->讀寫 read/write->關(guān)閉 close”模式來(lái)操作。Socket 就是該模式的一個(gè)實(shí)現(xiàn),socket 即是一種特殊的文件,一些 socket 函數(shù)。就是對(duì)其進(jìn)行的操作(讀/寫 IO、打開、關(guān)閉)。說(shuō)白了 socket 是應(yīng)用程序與 TCP/IP 協(xié)議族通信的中間軟件抽象層,它是一組接口,F(xiàn)在看一下基于 TCP/IP 應(yīng)用程序通信的流程,如圖 77.1.1。

通過上圖可以看到 TCP/IP 通信是基于服務(wù)器/客戶端的模式來(lái)實(shí)現(xiàn)的,首先是服務(wù)器(server)端調(diào)用socket 函數(shù)創(chuàng)建一個(gè)套接字,然后調(diào)用 bind 綁定函數(shù),綁定函數(shù)主要是設(shè)置通信時(shí)使用哪種地址族(IPv4,IPv6 等),使用的端口號(hào)。然后調(diào)用 listen 函數(shù)來(lái)監(jiān)聽客戶端的連接請(qǐng)求。
現(xiàn)在來(lái)看下客戶端(client)端的流程,首先調(diào)用 socket 函數(shù)創(chuàng)建一個(gè)套接字,然后調(diào)用 connect 函數(shù)連接服務(wù)器,這時(shí)服務(wù)器端的 listen 函數(shù)監(jiān)聽到客戶端的連接請(qǐng)求就會(huì)調(diào)用 accept 函數(shù)去接受請(qǐng)求,這樣連接就建立好了。之后雙方就可以調(diào)用 read/write 函數(shù)收發(fā)數(shù)據(jù)了,在完成通信以后服務(wù)器(server)和客
戶端(client)調(diào)用 close 函數(shù)關(guān)閉創(chuàng)建的套接字。
下面來(lái)看一個(gè)實(shí)現(xiàn) TCP/IP 的通信的例子,首先來(lái)看一下服務(wù)器(server)端的代碼:


程序首先是包含一些需要用到的頭文件,然后是 main 主函數(shù),在 main 函數(shù)里面首先是定義了一些變量,然后調(diào)用 socket 函數(shù)創(chuàng)建一個(gè)套接字,socket 函數(shù)的第二個(gè)參數(shù)是 SOCK_STREAM,表示創(chuàng)建的是TCP 連接。然后調(diào)用 bzero 函數(shù)把變量 s_add 清零,然后給 s_add 結(jié)構(gòu)里面的變量賦值:

然后調(diào)用 bind 綁定函數(shù),使用的是 IPv4 協(xié)議族,然后調(diào)用 listen 監(jiān)聽函數(shù),監(jiān)聽用戶的連接請(qǐng)求。在監(jiān)聽到用戶的請(qǐng)求后調(diào)用 accept 函數(shù)接受請(qǐng)求,然后進(jìn)入到循環(huán)發(fā)送的代碼,會(huì)循環(huán)發(fā)送“hello,welcometo my server”+發(fā)送次數(shù)號(hào),最后會(huì)調(diào)用 close 關(guān)閉套接字。
下面來(lái)看看客戶端(client)端的代碼:


首先是包含一些需要的頭文件,然后進(jìn)入 main 主函數(shù)定義了一些變量,然后調(diào)用 socket 函數(shù)創(chuàng)建套接字,然后調(diào)用 bzero 函數(shù)把變量 s_add 清零,然后給 s_add 結(jié)構(gòu)里面的變量賦值:

然后調(diào)用 connect 函數(shù)來(lái)連接服務(wù)器(server),在連接成功后,就進(jìn)入了循環(huán)接收函數(shù),使用 read 函數(shù)接收服務(wù)器發(fā)送的數(shù)據(jù)。最后會(huì)調(diào)用 close 函數(shù)關(guān)閉套接字。
下面來(lái)編譯下這兩個(gè)程序,服務(wù)器(server)的程序運(yùn)行在虛擬機(jī) Ubuntu 上,所以使用下面的命令編譯:
gcc -o server server.c
這樣就生成了 server 可執(zhí)行文件,客戶端(client)的程序運(yùn)行在 iTOP-IMX6UL 開發(fā)板上,使用下面的命令編譯:
arm-none-linux-gnueabi-gcc -o client client.c
這樣就生成了 client 可執(zhí)行程序,把 client 下載到 iTOP-IMX6UL 開發(fā)板上,現(xiàn)在開始運(yùn)行這兩個(gè)程序,首先在虛擬機(jī) Ubuntu 上運(yùn)行 serevr 程序,如圖 77.1.2。

可以看到 server 打印出來(lái)的運(yùn)行信息,現(xiàn)在 server 運(yùn)行到了 listen 函數(shù)開始監(jiān)聽客戶端的連接。下面在 iTOP-IMX6ULL 開發(fā)板上運(yùn)行 client 程序(因?yàn)槲野?client 下載到了/bin 目錄下,所以先進(jìn)入到/bin 目錄)執(zhí)行下面的命令:
./client 192.168.1.77
上面命令里面的 192.168.1.77 是虛擬機(jī) Ubuntu 的 IP 地址,看到程序連接成功,首先看一下虛擬機(jī)Ubuntu 上的 server 打出的信息,如圖 77.1.3。

可以看到上圖中 server 打印出了客戶端的 ip 地址和端口號(hào)“Server start get connectfrom 0xc0a801e6 :0xe171”。
然后看一下 iTOP-IMX6UL 開發(fā)板串口的打印信息,如圖 77.1.4。

通過上圖可以看到打印連接成功“connect ok !”,然后串口會(huì)一直打印
read ok
REC:
hello,welcome to my server(0)
至此,基于 TCP/IP 的 socket 網(wǎng)絡(luò)編程就已經(jīng)完成了。


本文地址:http://m.qingdxww.cn/thread-768978-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 利用SAM E54 Xplained Pro評(píng)估工具包演示CAN轉(zhuǎn)USB橋接器以及基于CAN的主機(jī)和自舉程序應(yīng)用程序
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧洲一区二区三区在线观看 | 最近中文字幕完先锋资源 | 日本在线一区 | 阿v视频在线免费观看 | 欧美国产日韩在线观看 | 精品国产福利在线观看一区 | 日本免费不卡视频 | 特级毛片永久久免费观看 | 黄色网站在线视频 | 亚洲国产日韩在线一区 | 韩日一级 | gay80岁帅老头毛都白了 | 欧美一级久久久久久久大片 | 九月婷婷丁香 | 在线天堂中文www官网 | 日韩色网 | 欧美xxxxx性喷潮 | 热久久只有精品 | 色婷婷欧美| 国内精品一区二区三区αv 国内精品一区二区三区 | 免费一级毛片在线视频观看 | 四虎影视在线免费观看 | 亚洲成人网在线 | 97夜夜澡人人爽人人喊一欧美 | 国产精品好好热在线观看 | 一本久道热中字伊人 | 亚洲欧洲一二三区 | 日韩中文字幕一区 | 日韩一级黄色大片 | 忍者刺客韩国在线观看完整免费版 | 伊人久久婷婷 | 痴女勃起寸止榨干精在线播放 | 四虎永久免费地址在线网站 | 亚洲国产香蕉视频欧美 | 国产黄色在线免费观看 | 在线精品自拍 | 天天操大逼| 九月丁香婷婷 | 色多多幸福宝 | 久久国产一区二区 | 国产xxxxx在线播放 |