李敏+黃巧巧+劉紹麗



摘要:隨著嵌入式技術的發展及其在高端產品中的應用,網絡通信已成為嵌入式產品開發的必然需求。基于嵌入式Linux操作系統開發高性能的網絡通信程序是充分發揮Linux網絡特性的一個關鍵因素。通過對socket原理的研究與分析,設計了嵌入式系統基于數據流的網絡通信過程,并給出了詳細的實驗過程和實驗結果。該系統的實現對其他類似系統具有一定的參考和借鑒作用及較好的推廣作用。
關鍵詞:套接字;嵌入式Linux;網絡通信;TCP/IP協議
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)30-0274-02
一、引言
隨著數字信息技術和網絡技術的高速發展,嵌入式技術已經廣泛應用到各個領域、各類產業以及人們的日常生活等各方面,成為引人矚目的熱點。為適應嵌入式和網絡應用需求,標準的一種或多種網絡通信接口成為嵌入式系統的必備需求,需要TCP/IP協議支持。而socket是TCP/IP網絡最為通用的API,計算機可以通過這個端口與任何具有socket接口的設備通信。
二、socket簡介
TCP/IP是一組支持網絡通信的協議系統,其協議參考模型分為4層:網絡接口層、互聯網層、傳輸層和應用層。網絡通信中一個非常重要的概念就是套接字(socket),它是介于網絡應用層和傳輸層之間的編程接口,在Linux網絡層次模型中的位置如圖1所示。套結字利用IP地址與端口號與Internet中的網絡進程一一對應,進而實現網絡通信。最常使用的socket有兩種:(1)數據流式socket(SOCK-STREAM),使用TCP協議,提供面向連接的可靠通信流;(2)數據報式socket(SOCK-DGRAM),使用UDP協議,提供無連接的服務,并且不保證可靠、無差錯。本文所使用的是流式套接字。
三、socket通信的設計與實現
1.socket通信過程。網絡程序具備Client/Server結構。下面分TCP Client端及TCP Server端為說明TCP網絡程序的流程,如圖2所示。
Server端啟動后,先調用socket()函數建立socket,其次通過bind()函數綁定socket和本地IP地址,然后調用listen()函數做好偵聽準備,再調用accept()函數進行接收。Client端建立socket后,通過connect()函數和Server端建立連接。之后即可調用send()和recv()來實現發送和接收。關閉socket通過調用close()來實現。
2.socket通信的實現。本實驗PC機上安裝的是Redhat 9.0版本的Linux操作系統,嵌入式實驗平臺采用三星S3C2410微處理器,嵌入式操作系統內核版本為2.4.18。分別編寫服務器端應用程序server.c和客戶端應用程序client.c,實現網絡通信,程序流程圖如圖3、圖4所示。
四、結果分析
設置PC機和目標平臺的IP地址分別為:192.168.1.20和192.168.1.22。PC機Linux終端和目標平臺分別運行Server和client程序,通過超級終端觀察到運行結果如圖5所示,可見PC機與目標平臺成功建立連接,實現通信,達到了預期目標。
五、結語
研究socket通信對開發具有網絡功能的嵌入式產品有著非常重要的作用。本文的實現對于嵌入式產品的網絡應用是一個很好的探索,對于同類系統的設計具有實際的參考和推廣價值。嵌入式系統與網絡的結合,必然使其具有更加廣闊的應用空間。
參考文獻:
[1]劉崢嶸.嵌入式Linux應用開發詳解[M].北京:機械工業出版社,2004:394-433.
[2]吳明輝.基于ARM的嵌入式系統開發與應用[M].北京:人民郵電出版社,2004:187-197.
[3]王進德.嵌入式Linux程序設計與應用案例[M].北京:中國電力出版社,2007:107-125.