官术网_书友最值得收藏!

第3章 windows環境下進行網絡通信

基于wince的嵌入式網絡通信系統設計

由于網絡通訊的快速、便捷等優點,其在嵌入式系統中應用越來越多。最基本的實現方法是應用windows sockets實現;visual studio開發環境提供了大量基于windows sockets的通訊api函數,如winsockapi、wininetapi和isapi,將這些api函數與mfc集成在一起,使網絡通信的開發周期越來越短、編程方法越來越簡單。本文重點介紹了使用mfc的csocket類編寫pc端網絡通信客戶端的的實現方法,并介紹了如何完成windows ce操作系統下網絡通訊程序的設計。

1、csocket編程

mfc將復雜的winsock api函數封裝到相關類,使得網絡編程更容易、簡單。為了給編程人員提供更加方便的接口,mfc提供了csocket類,它是由casyncsocket類繼承下來的,提供了比casyncsocket類更高層、更易于編程操作的winsock api接口。使用csocket對象涉及carchive和csocketfile類對象。csocket編程步驟:(1)構造一個csocket對象;(2)使用create()成員函數生成一個socket對象。設計客戶端程序時,create()函數一般情況下應該使用默認參數。對于服務端程序,在本文由論文聯盟

2、網絡客戶端程序設計

2.1 pc機網絡通訊客戶端設計

(1)啟動visual studio 2010,創建一個基于對話框架的mfc應用程序項目,將該項目命名為“test“;在mfc向導中選中windows套接字;

(2)在對話框中添加按鈕控件與編輯框控件;

(3)使用類向導為應用程序的按鈕添加鼠標單擊消息響應函數;

(4)使用類向導在應用程序中定義新類cnewsocket,其基類選擇為csocket;重載newsocket類的onaccept()、onreceive()、onclose()函數;增加公有變量ctestdlg *m_dlg; intm_status并添加成員函數void getdlg(ctestdlg *dlg);

(5)為窗口類testdlg添加5個公有成員變量:csocketfile *m_file;carchive *m_arout;carchive *m_arin;cnewsocket* m_serversocket;cnewsocket* m_clientsocket;并添加公有4個成員函數:voidsocketreset();void onclose();void onreceive();void onaccept();

(6)編譯

2.2嵌入式wince系統網絡通訊客戶端設計

對于嵌入式wince系統客戶端,其源代碼與pc機源代碼基本一樣,只有步驟(1)不同,其他步驟與pc過程相同。步驟(1):啟動visual studio 2005,創建一個新項目,project types選擇“smart device”,然后templates選擇“mfc smart device application”,將該項目命名為“test“;在mfc向導中選中windows套接字。

3、系統測試

將編譯好的嵌入式wince系統網絡通訊客戶端下載到arm開發板nandflash中,利用交叉網線連接pc機與arm開發板。待連接成功后,通過網絡鏈接屬性查看雙方ip地址。啟動客戶端,設置好需要鏈接的ip地址,將pc機設置為服務器,arm端設置為客戶端,啟動連接。通訊連接成功后,通訊結果如圖1所示。

(a)pc機客戶端(b)嵌入式客戶端

圖1測試結果

4、結論

文中主要介紹了mfc中csocket類編程思想與設計方法,并通過csocket類實現了pc-arm網絡通信客戶端設計。arm平臺為ok6410開發板,采用wince操作系統。pc與arm通信采用客戶/服務器通信模型,pc與arm均可選擇為服務器,通過實例完成了pc機與嵌入式系統的網絡通訊客戶端設計。該設計方法的缺點在于通訊數據較為單一,無法實現圖片的傳輸等。

主站蜘蛛池模板: 随州市| 南郑县| 临潭县| 龙海市| 潞城市| 忻城县| 泰宁县| 开江县| 新巴尔虎右旗| 南开区| 巴彦淖尔市| 湘阴县| 丹凤县| 邮箱| 鹤壁市| 天峻县| 抚顺市| 无棣县| 库尔勒市| 彰化县| 穆棱市| 达拉特旗| 汾阳市| 乡宁县| 广平县| 鄂托克旗| 鄂托克前旗| 依兰县| 金寨县| 抚远县| 盘锦市| 华宁县| 象州县| 浦江县| 南昌县| 贺兰县| 崇仁县| 民丰县| 曲阜市| 葵青区| 乡宁县|