第1章 开发平台和网络编程_第1页
第1章 开发平台和网络编程_第2页
第1章 开发平台和网络编程_第3页
第1章 开发平台和网络编程_第4页
第1章 开发平台和网络编程_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 网络编程和开发环境1.1.1 11.1.2 2Visual C+ 2010Visual C+ 2010开发平台开发平台网络编程的基本概念网络编程的基本概念1 . 1 Visual C+ 2010开发平台Visual Studio 2010Visual Studio 2010安装安装本书使用网上下载的Visual Studio 2010安装包:cn_visual_studio_2010_ultimate_x86_dvd_532347.iso这是个镜像(.iso)文件,需要虚拟光驱才能运行。用虚拟光驱软件DAEMON Tools Lite载入镜像,如图1.1所示。1.1.1 Visual

2、Studio 2010安装载入后弹出如图1.2所示的启动窗口。1.1.1 Visual Studio 2010安装单击“安装Microsoft Visual Studio 2010”,进入如图1.3所示的安装向导界面,单击“下一步”按钮继续。1.1.1 Visual Studio 2010安装在图1.4所示窗口中选择“我已阅读并接受许可条款”,在图1.5所示窗口中选择“完全”,产品安装路径为默认的“C:Program FilesMicrosoft Visual Studio 10.0”,单击“安装”按钮开始安装进程。 1.1.1 Visual Studio 2010安装Visual Studi

3、o 2010包含Microsoft .NET平台的许多组件,如图1.6所示。1.1.1 Visual Studio 2010安装初次启动会弹出如图1.7所示的“选择默认环境设置”对话框,本书是Visual C+ 编程,故选择“Visual C+开发设置”,单击“启动Visual Studio”按钮进入开发环境。1.1.1 Visual Studio 2010安装Visual Studio 2010的Visual C+集成开发环境的起始界面如图1.8所示。1.1.2 创建Visual C+项目工程选择菜单命令“文件”“新建”“项目”,如图1.9所示。 1.1.2 创建Visual C+项目工程系

4、统弹出“新建项目”对话框(如图1.10所示),左边“项目类型”树中默认选项为“Visual C+”“MFC”,对应右边“模板”选择“MFC应用程序”。1.1.2 创建Visual C+项目工程单击“确定”按钮,弹出“MFC应用程序向导”对话框(如图1.11所示),接下来我们将在这个对话框的指引下轻松完成创建VC工程的工作,单击“下一步”按钮继续。1.1.2 创建Visual C+项目工程在“应用程序类型”界面(如图1.12所示)选中“基于对话框”单选按钮。1.1.2 创建Visual C+项目工程接下来的“用户界面功能”和“高级功能”界面(如图1.13所示)都采用系统默认设置,连续单击“下一步

5、”按钮跳过。1.1.2 创建Visual C+项目工程最后一步出现的是“生成的类”,稍留意下可以看到,系统已经自动为程序建立了两个类CGetIPAndPortApp和CGetIPAndPortDlg(如图1.14所示)。1.1.3 Visual C+可视化设计开发环境工作区主界面将呈现的样子如图1.15所示。1.1.3 Visual C+可视化设计主工作区大致分为三部分,最左边是供用户浏览程序结构的,包括好几个选项卡界面,常用的是解决方案资源管理器、类视图和资源视图,如图1.16所示。1.1.3 Visual C+可视化设计在本例的三个类中,CAboutDlg类和CGetIPAndPortDl

6、g类都有各自的对话框界面资源。资源视图中Dialog目录下有它们的ID号(对应的分别是IDD_ABOUTBOX和IDD_GETIPANDPORT_ DIALOG),双击ID号可以打开其对话框的界面设计工作区,如图1.17所示。1.1.3 Visual C+可视化设计只是针对本书所介绍的网络编程,有一个控件需要特别提一下,那就是IP地址控件(如图1.18所示)。它在界面上的显示效果如图1.19所示。 1.1.3 Visual C+可视化设计选择工具箱中的控件设计程序界面,可以看到VC界面设计环境的使用极其方便,丝毫不比VB逊色。在布局界面时可以使用工具栏中提供的功能调整各个控件的大小、对齐方式。

7、如图1.20所示,1.1.3 Visual C+可视化设计最终设计出的程序界面效果如图1.21所示。1.1.4 一个简单的Visual C+小程序例如,为了在程序代码中获得用户输入的IP,需要给IP地址控件关联一个变量。如图1.22所示,右击该控件,在弹出的菜单中选择“添加变量”命令。 1.1.4 一个简单的Visual C+小程序出现“添加成员变量向导”对话框(如图1.23所示),将变量命名为“m_ip”,变量类别为“Control”。1.1.4 一个简单的Visual C+小程序下面接着添加变量,给用于接收端口号的文本框关联Value变量strport(如图1.24所示)。1.1.4 一个

8、简单的Visual C+小程序再设置该文本框的Number属性为True(如图1.25所示),之所以这样设置,是为了限定用户只能在这个文本框中输入数字形式的端口号。1.1.4 一个简单的Visual C+小程序本程序还有一个文本框是用于显示程序获取的IP和端口的,给它关联Control型变量m_showIpAndPort,并且设置Read Only属性为True(作为显示信息窗口的文本框一般都设为只读模式),如图1.26所示。 1.1.4 一个简单的Visual C+小程序程序界面上的“获取”按钮是实现本程序功能的关键,编程工作主要就是给这个按钮添加事件处理程序。右击“获取”按钮,在弹出的功能

9、菜单中选择“添加事件处理程序”命令,如图1.27所示。1.1.4 一个简单的Visual C+小程序在“事件处理程序向导”对话框中将这个处理程序命名为“OnShowIpAndPort”,如图1.28所示。1.1.4 一个简单的Visual C+小程序单击“添加编辑”按钮,进入代码编辑窗口(如图1.29所示),VC自动打开需要编辑的程序代码文件GetIPAndPortDlg.cpp并定位到源文件中相应的位置,供用户添加自己的代码。1.1.4 一个简单的Visual C+小程序为“获取”按钮编写的事件过程代码如下:BYTE nFild4;/分别存放IP地址的四个字段CString sip; /IP

10、地址的字符串形式(可以直接显示在界面上的)UpdateData(); /刷新对话框界面,获取用户输入/验证输入是否合法if(m_ip.IsBlank()/若用户没有填写IP地址,则提示填写AfxMessageBox(请填写IP地址!);return;if(strport.IsEmpty()/若用户忘了指定端口号,则提醒其指定AfxMessageBox(请指定进程端口!);return;/获取用户输入的IP地址值m_ip.GetAddress(nFild0,nFild1,nFild2,nFild3);/将IP地址格式化为可以在计算机屏幕上显示的字符串sip.Format(%d.%d.%d.%d,

11、nFild0,nFild1,nFild2,nFild3);/在界面上显示用户输入的网络进程地址(包括所在主机的IP和端口)m_showIpAndPort.SetWindowTextA(sip + : + strport);m_ip.SetFocus();/焦点回到IP地址栏1.1.4 一个简单的Visual C+小程序双击“关于”按钮,为其添加事件过程(如图1.30所示)。“关于”按钮的Click事件代码如下:CAboutDlg dlg;dlg.DoModal();/显示“关于”对话框1.1.4 一个简单的Visual C+小程序单击工具栏上的“启动调试”( )按钮,程序界面如图1.31所示。

12、我们先不填写IP地址而直接单击“获取”按钮,看看会发生什么。程序弹出了消息框,提醒填写IP地址(如图1.32所示)。 1.1.4 一个简单的Visual C+小程序填写完合法IP,再故意不填端口号,单击“获取”按钮后,程序同样也会弹出消息框,提醒输入端口号(如图1.33所示)。1.1.4 一个简单的Visual C+小程序在IP和端口都合法填写的情况下,单击“获取”按钮,程序就会将用户输入的网络进程地址(IP+端口)显示在下方的输出文本框中,如图1.34所示。1.1.4 一个简单的Visual C+小程序单击“关于”按钮,程序弹出“关于GetIPAndPort”对话框(如图1.35所示),这是

13、一个版本声明对话框,每一个Windows程序几乎都有这样一个对话框,用于声明版本号和版权信息。1 . 2 网络编程基础知识1.2.1 1.2.1 计算机网络协议计算机网络协议网络中的计算机要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,这些规则、标准或约定就称为网络协议(Network Protocol),它主要由以下三个要素组成:(1)语法语法,即数据与控制信息的结构或格式;(2)语义语义,即需要发出何种控制信息,完成何种动作,以及做出何种响应;(3)同步同步,即事件实现顺序的详细说明。1.2.1 网络协议该协议将网络功能划分成独立的四层结构,自上而下分别是应用层、传输层、网际层和

14、网络接口层,如图1.36所示。1.2.1 网络协议其实TCP/IP并不是一个单独的协议,而是由一系列网络协议所组成的协议集合(协议族),这个庞大的协议家族按照如图1.37所示的分层结构组织起来构成的有机整体称为网络协议栈。1.2.1 网络协议1. 1. 应用层(应用层(Application LayerApplication Layer)。)。应用层在TCP/IP协议栈的第4层,即最高层,它提供面向用户的网络服务,如进行文件的传输服务和远程登录服务等。不同的用户对应用层服务的需求不同。因此,应用层定义了许多面向用户的,提供特定服务的协议。比较常用的有远程登录协议(Telnet)、文件传输协议(

15、FTP)、超文本传输协议(HTTP)、域名系统(DNS)、简单网络管理协议(SNMP)、简单邮件传输协议(SMTP)、邮局协议(POP3)和即时通信协议(OICQ)等。2. 2. 传输层(传输层(Transport LayerTransport Layer)。)。在应用层之下的是传输层,有的书中也称为“运输层”。在TCP/IP协议栈中,传输层处于第3层。传输层完成通常所说的两台主机之间的通信,其实质是两台主机上对应的应用进程之间应用进程之间的通信,也称为端到端(End to End)通信。1.2.1 网络协议3. 3. 网际层(网际层(Internet LayerInternet Layer)

16、。)。网际层在TCP/IP协议栈的第2层,也称为互联网络层(互联层)或Internet层,因该层的主要协议是IP,所以也可简称为IP层。它是TCP/IP协议栈中最重要的一层,主要功能是将源主机上的分组根据需要发送到Internet中的任何一台目标主机上。4. 4. 网络接口层(网络接口层(Host-to-network LayerHost-to-network Layer)。)。网络接口层处于TCP/IP协议栈的最低层,它负责将其之上的网络层所要发送出去的数据(即IP数据报)发送到其下面的物理网络,或接收由物理网络发送到该目标机的数据帧,并抽出IP数据报交给网际层。1.2.2 网络应用编程界面

17、平时上网的时候如果单击桌面右下角任务栏上表示网络连接的图标,在弹出的网络连接状态对话框中单击“属性”按钮,就可以在连接使用的项目列表中看到已经内置于操作系统之中的TCP/IP了,如图1.38所示。1.2.2 网络应用编程界面学习网络编程首先要清楚所做的是哪一个层次上的编程工作。目前,网络的四层体系结构中的三层已经有了成熟可靠的实现实体,如图1.39所示。编程界面有两种形式,一种是由内核直接提供的系统调用,在Windows下表现为Windows API函数;另一种是以程序库方式提供的各种函数和类。1.2.2 网络应用编程界面TCP/IP网络环境下的应用程序是通过网络应用编程界面(Socket,即

18、套接字)实现的。(1)Windows Socket的概念。Windows Socket顾名思义,就是在Windows环境下使用的Socket,那么Socket又是什么呢?它是一套网络编程机制(或规范),简称为Winsock。(2)Windows Socket的来源。Socket最早是UNIX操作系统下流行的一种网络编程接口,于1983年在Berkeley(加州大学伯克利分校)4.2 BSD操作系统中被首先引入,因此被称为Berkeley Socket API。1.2.3 网络程序工作机理通信时,其中的一个网络程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡相连的传输介质将这段信息发送到另外一台主机的Socket中,使这段信息能够传送到其他程序中,如图1.40所示。1.2.3 网络程序工作机理为了满足不同的通信程序对通信质量和性能的要求,一般的网络系统都提供了以下三种不同类型的套接字,以供用户在设计网络程序时根据需要进行选择。 流式套接字(SOCK_STREAM)。它提供了一种可靠的、面向连接的双向数据传输服务。实现了数据的无差错、无重复地发送,内设流量控制,被传输的数据看作是无记录边界的字节流。 数据报套接字(SOCK_DGRAM)。它提供了一种无连接、不可靠的双向数据传输服务。数据以独立的包形式被发送,并且保留了记录边界,不提供可靠性保

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论