未来城科技
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第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机与嵌入式系统的网络通讯客户端设计。该设计方法的缺点在于通讯数据较为单一,无法实现图片的传输等。