您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第1章开发平台和网络编程.
第1章网络编程和开发环境1.11.2VisualC++2010开发平台网络编程的基本概念1.1VisualC++2010开发平台VisualStudio2010安装本书使用网上下载的VisualStudio2010安装包:cn_visual_studio_2010_ultimate_x86_dvd_532347.iso这是个镜像(.iso)文件,需要虚拟光驱才能运行。用虚拟光驱软件DAEMONToolsLite载入镜像,如图1.1所示。1.1.1VisualStudio2010安装载入后弹出如图1.2所示的启动窗口。1.1.1VisualStudio2010安装单击“安装MicrosoftVisualStudio2010”,进入如图1.3所示的安装向导界面,单击“下一步”按钮继续。1.1.1VisualStudio2010安装在图1.4所示窗口中选择“我已阅读并接受许可条款”,在图1.5所示窗口中选择“完全”,产品安装路径为默认的“C:\ProgramFiles\MicrosoftVisualStudio10.0\”,单击“安装”按钮开始安装进程。1.1.1VisualStudio2010安装VisualStudio2010包含Microsoft.NET平台的许多组件,如图1.6所示。1.1.1VisualStudio2010安装初次启动会弹出如图1.7所示的“选择默认环境设置”对话框,本书是VisualC++编程,故选择“VisualC++开发设置”,单击“启动VisualStudio”按钮进入开发环境。1.1.1VisualStudio2010安装VisualStudio2010的VisualC++集成开发环境的起始界面如图1.8所示。1.1.2创建VisualC++项目工程选择菜单命令“文件”→“新建”→“项目”,如图1.9所示。1.1.2创建VisualC++项目工程系统弹出“新建项目”对话框(如图1.10所示),左边“项目类型”树中默认选项为“VisualC++”→“MFC”,对应右边“模板”选择“MFC应用程序”。1.1.2创建VisualC++项目工程单击“确定”按钮,弹出“MFC应用程序向导”对话框(如图1.11所示),接下来我们将在这个对话框的指引下轻松完成创建VC工程的工作,单击“下一步”按钮继续。1.1.2创建VisualC++项目工程在“应用程序类型”界面(如图1.12所示)选中“基于对话框”单选按钮。1.1.2创建VisualC++项目工程接下来的“用户界面功能”和“高级功能”界面(如图1.13所示)都采用系统默认设置,连续单击“下一步”按钮跳过。1.1.2创建VisualC++项目工程最后一步出现的是“生成的类”,稍留意下可以看到,系统已经自动为程序建立了两个类——CGetIPAndPortApp和CGetIPAndPortDlg(如图1.14所示)。1.1.3VisualC++可视化设计开发环境工作区主界面将呈现的样子如图1.15所示。1.1.3VisualC++可视化设计主工作区大致分为三部分,最左边是供用户浏览程序结构的,包括好几个选项卡界面,常用的是解决方案资源管理器、类视图和资源视图,如图1.16所示。1.1.3VisualC++可视化设计在本例的三个类中,CAboutDlg类和CGetIPAndPortDlg类都有各自的对话框界面资源。资源视图中Dialog目录下有它们的ID号(对应的分别是IDD_ABOUTBOX和IDD_GETIPANDPORT_DIALOG),双击ID号可以打开其对话框的界面设计工作区,如图1.17所示。1.1.3VisualC++可视化设计只是针对本书所介绍的网络编程,有一个控件需要特别提一下,那就是IP地址控件(如图1.18所示)。它在界面上的显示效果如图1.19所示。1.1.3VisualC++可视化设计选择工具箱中的控件设计程序界面,可以看到VC界面设计环境的使用极其方便,丝毫不比VB逊色。在布局界面时可以使用工具栏中提供的功能调整各个控件的大小、对齐方式。如图1.20所示,1.1.3VisualC++可视化设计最终设计出的程序界面效果如图1.21所示。1.1.4一个简单的VisualC++小程序例如,为了在程序代码中获得用户输入的IP,需要给IP地址控件关联一个变量。如图1.22所示,右击该控件,在弹出的菜单中选择“添加变量”命令。1.1.4一个简单的VisualC++小程序出现“添加成员变量向导”对话框(如图1.23所示),将变量命名为“m_ip”,变量类别为“Control”。1.1.4一个简单的VisualC++小程序下面接着添加变量,给用于接收端口号的文本框关联Value变量strport(如图1.24所示)。1.1.4一个简单的VisualC++小程序再设置该文本框的Number属性为True(如图1.25所示),之所以这样设置,是为了限定用户只能在这个文本框中输入数字形式的端口号。1.1.4一个简单的VisualC++小程序本程序还有一个文本框是用于显示程序获取的IP和端口的,给它关联Control型变量m_showIpAndPort,并且设置ReadOnly属性为True(作为显示信息窗口的文本框一般都设为只读模式),如图1.26所示。1.1.4一个简单的VisualC++小程序程序界面上的“获取”按钮是实现本程序功能的关键,编程工作主要就是给这个按钮添加事件处理程序。右击“获取”按钮,在弹出的功能菜单中选择“添加事件处理程序”命令,如图1.27所示。1.1.4一个简单的VisualC++小程序在“事件处理程序向导”对话框中将这个处理程序命名为“OnShowIpAndPort”,如图1.28所示。1.1.4一个简单的VisualC++小程序单击“添加编辑”按钮,进入代码编辑窗口(如图1.29所示),VC自动打开需要编辑的程序代码文件GetIPAndPortDlg.cpp并定位到源文件中相应的位置,供用户添加自己的代码。1.1.4一个简单的VisualC++小程序为“获取”按钮编写的事件过程代码如下:BYTEnFild[4];//分别存放IP地址的四个字段CStringsip;//IP地址的字符串形式(可以直接显示在界面上的)UpdateData();//刷新对话框界面,获取用户输入//验证输入是否合法if(m_ip.IsBlank())//若用户没有填写IP地址,则提示填写{AfxMessageBox(请填写IP地址!);return;}if(strport.IsEmpty())//若用户忘了指定端口号,则提醒其指定{AfxMessageBox(请指定进程端口!);return;}//获取用户输入的IP地址值m_ip.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);//将IP地址格式化为可以在计算机屏幕上显示的字符串sip.Format(%d.%d.%d.%d,nFild[0],nFild[1],nFild[2],nFild[3]);//在界面上显示用户输入的网络进程地址(包括所在主机的IP和端口)m_showIpAndPort.SetWindowTextA(sip+:+strport);m_ip.SetFocus();//焦点回到IP地址栏1.1.4一个简单的VisualC++小程序双击“关于”按钮,为其添加事件过程(如图1.30所示)。“关于”按钮的Click事件代码如下:CAboutDlgdlg;dlg.DoModal();//显示“关于”对话框1.1.4一个简单的VisualC++小程序单击工具栏上的“启动调试”()按钮,程序界面如图1.31所示。我们先不填写IP地址而直接单击“获取”按钮,看看会发生什么。程序弹出了消息框,提醒填写IP地址(如图1.32所示)。1.1.4一个简单的VisualC++小程序填写完合法IP,再故意不填端口号,单击“获取”按钮后,程序同样也会弹出消息框,提醒输入端口号(如图1.33所示)。1.1.4一个简单的VisualC++小程序在IP和端口都合法填写的情况下,单击“获取”按钮,程序就会将用户输入的网络进程地址(IP+端口)显示在下方的输出文本框中,如图1.34所示。1.1.4一个简单的VisualC++小程序单击“关于”按钮,程序弹出“关于GetIPAndPort”对话框(如图1.35所示),这是一个版本声明对话框,每一个Windows程序几乎都有这样一个对话框,用于声明版本号和版权信息。1.2网络编程基础知识1.2.1计算机网络协议网络中的计算机要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,这些规则、标准或约定就称为网络协议(NetworkProtocol),它主要由以下三个要素组成:(1)语法,即数据与控制信息的结构或格式;(2)语义,即需要发出何种控制信息,完成何种动作,以及做出何种响应;(3)同步,即事件实现顺序的详细说明。1.2.1网络协议该协议将网络功能划分成独立的四层结构,自上而下分别是应用层、传输层、网际层和网络接口层,如图1.36所示。1.2.1网络协议其实TCP/IP并不是一个单独的协议,而是由一系列网络协议所组成的协议集合(协议族),这个庞大的协议家族按照如图1.37所示的分层结构组织起来构成的有机整体称为网络协议栈。1.2.1网络协议1.应用层(ApplicationLayer)。应用层在TCP/IP协议栈的第4层,即最高层,它提供面向用户的网络服务,如进行文件的传输服务和远程登录服务等。不同的用户对应用层服务的需求不同。因此,应用层定义了许多面向用户的,提供特定服务的协议。比较常用的有远程登录协议(Telnet)、文件传输协议(FTP)、超文本传输协议(HTTP)、域名系统(DNS)、简单网络管理协议(SNMP)、简单邮件传输协议(SMTP)、邮局协议(POP3)和即时通信协议(OICQ)等。2.传输层(TransportLayer)。在应用层之下的是传输层,有的书中也称为“运输层”。在TCP/IP协议栈中,传输层处于第3层。传输层完成通常所说的两台主机之间的通信,其实质是两台主机上对应的应用进程之间的通信,也称为端到端(EndtoEnd)通信。1.2.1网络协议3.网际层(InternetLayer)。网际层在TCP/IP协议栈的第2层,也称为互联网络层(互联层)或Internet层,因该层的主要协议是IP,所以也可简称为IP层。它是TCP/IP协议栈中最重要的一层,主要功能是将源主机上的分组根据需要发送到Internet中的任何一台目标主机上。4.网络接口层(Host-to-networkLayer)。网络接口层处于TCP/IP协议栈的最低层,它负责将其之上的网络层所要发送出去的数据(即IP数据报)发送到其下面的物理网络,或接收由物理网络发送到该目标机的数据帧,并抽出IP数据报交给网际层。1.2.2网络应用编程界面平时上网的时候如果单击桌面右下角任务栏上表示网络连接的图标,在弹出的网络连接状态对话框中单击“属性”按钮,就可以在连接使用的项目列表中看到已经内置于操作系统之中的TCP/IP了,如图1.38所示。1.2.2网络应用编程界面学习网络编程首先要清楚所做的是哪一个层次上的编程工作。目前,网络的四层体系结构中的三层已经有了成熟可靠的实现实体,如图1.39所示。编程界面有两种形式,一种是由内核直接提供的系统调用,在Windows下表现为WindowsAPI函数;另一种是以程序库方式提供的各种函数和类。1.2.2网络应用编程界面TCP/IP网络环境下的应用程序是通过网络应用编程界面(Socket,即套接字)实现的。(1)WindowsSocket的概念。WindowsSocket顾名思义,就是在Windows环境下使用的Socket,那么Socket又是什么呢?它是一套网络编程机制(或规范),简称为Winsock。(2)WindowsSocket的来源。Socket最早是UNIX操作系统下流行的一种
本文标题:第1章开发平台和网络编程.
链接地址:https://www.777doc.com/doc-2153321 .html