第3章 windows環境下進行網絡通信
- 未來城科技
- 寒冰作家
- 1275字
- 2023-06-29 00:45:51
基于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機與嵌入式系統的網絡通訊客戶端設計。該設計方法的缺點在于通訊數據較為單一,無法實現圖片的傳輸等。