网络协议编程应用课程设计

上传人:博****1 文档编号:543103434 上传时间:2023-06-21 格式:DOC 页数:20 大小:253KB
返回 下载 相关 举报
网络协议编程应用课程设计_第1页
第1页 / 共20页
网络协议编程应用课程设计_第2页
第2页 / 共20页
网络协议编程应用课程设计_第3页
第3页 / 共20页
网络协议编程应用课程设计_第4页
第4页 / 共20页
网络协议编程应用课程设计_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《网络协议编程应用课程设计》由会员分享,可在线阅读,更多相关《网络协议编程应用课程设计(20页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告设计名称: 网络协议编程应用课程设计 系 (院): 机算计科学学院 专业班级: 网络11003班 姓 名: 王小贱 学 号: 201006421 指导教师: 张为 邱机 设计时间: 2013.6.7 - 2013.6.18 设计地点: 四号楼1楼2号机房 一、目的与任务网络协议编程应用课程设计是TCP/IP协议分析课程后的一个重要的教学环节,是对学生进行的一次较为全面的网络协议编程方面的训练。其基本目的是:(1)培养学生理论联系实际的设计思想,训练综合运用所学的基础理论知识,结合生产实际分析和解决网络应用中问题的能力,从而使基础理论知识得到巩固和加深。(2)通过编程实践学习掌握网络

2、协议的运行原理。(3)练习多线程的网络编程模式,为以后开发真实的应用协议打下基础。二、基本要求(1)合理设计系统框图和程序结构图。(2)根据系统框图设计,编写程序代码。(3)编写程序说明书。三、实验环境 安装有vs2010以及虚拟机的计算机四、课程设计内容(1)、熟悉开发工具Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Mi

3、crosoft Visual Studio 2010 CTP( Community Technology Preview-CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server,它还支持 IBM DB2和Oracle数据库。学习使用好vs2010对于我们来说有很大意义。(2)、套接字编程练习 使用TCP/IP协议的应用程序通常采用两种应用编程接口(API):socket和TLI(运输层接)。前者有时称作Berkeley socket,表明它是从伯克利版发展而来的。后者起初是由AT & T开发的,有时称作XTI(X/Open运输层接口),以承认X/O

4、pen这个自己定义标准的国际计算机生产商所做的工作。XTI实际上是TLI的一个超集。而在windows操作系统中,实现了windows版本的socketAPI,又称winsock。TCP/IP还是OSI的ISO协议都是分层模式的,用层的概念屏蔽的下层的细节,只要完成自层的功能即可,因而程序员在做网络编程时并不需要去关心网络底层的具体实现,只需要关心软件的功能即可极大的简化了程序的编写。因而我们在学习网络socket编程时并不一定要很多的网络方面的知识,甚至是TCP/IP协议的知识也不需要太多。因而在着我就不介绍那方面的知识了,如果要了解网上也四处都有那些被别人应用了N遍的经典的介绍。 在这只介

5、绍基于TCP和UDP的简单的编程实现。现今的网络程序一般都是基于C/S模型,即客户机-服务器模型。这种结构将主要运算操作放在中心计算机上。同集中式大型计算系统比较,客户-服务器结构的主要优点 是提供了良好的实用性、灵活性、交互性和可扩展性。客户-服务器以数据库服务器取代集中式文件共享进而实现了计算机系统之间的松耦合。 Windows Sockets是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用。Windows Sockets在继承了Berkeley Sockets主要特征的基础上,又对它进行了重要扩充。

6、这些扩充主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制。Windows Sockets 1.1和Berkeley Sockets都是基于TCP/IP协议的;Windows Sockets 2从Windows Sockets 1.1发展而来,与协议无关并向下兼容,可以使用任何底 层传输协议提供的通信能力,来为上层应用程序完成网络数据通讯,而不关心底层网络链路的通讯情况,真正实现了底层网络通讯对应用程序的透明。套接字的类型总共有三类:1) 流式套接字(SOCK_STREAM)提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送,且按发送顺序接收。这种类

7、型是基于TCP协议的。2) 数据报式套接字(SOCK_DGRAM)提供无连接服务。数据包以独立包形式发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。 这种类型是基于UDP协议的3) 原始套接字(SOCK_RAW)。用于编写基于IP协议的程序。 它可以访问ICMP和ICMP等协议包,可以编写内核不处理的IP数据包,还可以创建自定义的IP数据包首部。(3)、TCP套接字编程 当使用TCP/IP协议一发客户服务器服务程序时,服务器需要等待任意数量客户端的连接,以便以他们提供服务。客户端连接服务器时,必须先知道服务器的名称。在TCP/IP中,就是服务器的IP地址和端口号。 bind()函数

8、实现将服务器绑定到一个已知的名字上的功能。接下来要将服务器套接字设置为监听状态,这是通过listen()函数完成的。在监听状态下,如果客户端向服务器发起连接请求,服务器通过调用accept()函数来接受该连接请求。服务器与客户端完成连接后,就可以进行数据通信了。对客户端来说,首先调用connect()函数向服务器发出连接请求。如果服务器接受了该请求,接下来就可以与服务器通信了。 开发套接字应用程序时,首先应进行Windows Sockets的初始化,加载Windows Sockets的实现,然后创建套接字,对TCP套接字来说,需要在socket()函数或都WSASocket()函数中指明SOC

9、K_STREAM套接字类型。当服务器和客户端通信结束时,关闭套接字,释放Windows Sockets的实现。流程如下:服务器:创建套接字绑定监听接受连接收发数据关闭客户端:创建套接字连接收发数据关闭Windows Sockets API重要函数说明如下:一、WSAStartup()函数:不管是客户端还是服务器,开发Windows Sockets应用程序时,必须首先加载Windows Sockets动态库(DLL)。WSAStartup()函数实现此项功能。该函数是套接字应用程序必须调用的第一个函数。该函数声明如下: int WSAStartup( WORD wVersionRequested

10、, LPWSADATA lpWSAData);wVersionRequested:指定准备加载Windows Sockets动态库的版本。高字节指定所需要库文件的副版本,低字节指定主版本。在应用程序中可以使用MAKEWORD(X,Y)方便指定该参数。X是高位字节,Y是低位字节 lpWSAData:指向lpwsadata结构的指针,该参数返回被加载动态库的有关信息。 WSADATA结构声明如下:#define WSADESCRIPTION_LEN 256#define WSASYS_STATUS_LEN 12 struct WSAData WORD wVersion; WORD wHighVer

11、sion; char szDescriptionWSADESCRIPTION_LEN+1;char szSystemStatusWSASYSSTATUS_LEN+1; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char *lpVendorInfo; WSADATA结构被用来保存函数WSAStartup返回的Windows Sockets初始化信息。 wVersion :Windows Sockets DLL期望调用者使用的Windows Sockets规范的版本。 高位字节存储副版本号, 低位字节存储主版本号,可以用WORD M

12、AKEWORD(BYTE,BYTE ) 返回这个值,例如:MAKEWORD(1,1) wHighVersion :这个DLL能够支持的Windows Sockets规范的最高版本。通常它与wVersion相同。 szDescription :以null结尾的ASCII字符串,Windows Sockets DLL将对Windows Sockets实现的描述拷贝到这个字符串中,包括制造商标识。文本(最多可以有256个字符)可以包含任何字符,但是要注意不能包含控制字符和格式字符,应用程序对其最可能的使用方式是把它(可能被截断)显示在在状态信息中。 szSystemStatus :以null结尾的A

13、SCII字符串,Windows Sockets DLL把有关的状态或配置信息拷贝到该字符串中。Windows Sockets DLL应当仅在这些信息对用户或支持人员有用时才使用它们,它不应被作为szDescription域的扩展。iMaxSockets :单个进出能够打开的socket的最大数目。iMaxUdpDg:一个进程发送或接收的最大数据报长度lpVendorInfo :指向销售商的数据结构的指针。这个结构的定义(如果有)超出了WindowsSockets规范的范围。 二、socket()函数 初始化Windows Sockets DLL之后,创建套接字。socket()函数和WSASo

14、cket()将实现此功能。socket()函数声明如下: SOCKET socket(int af, int type, int protocol ); af:协议地址家族。创建TCP/UDP套接字时该参数为AF_INET。 type:协议的套接字类型。有SOCK_STREAM、SOCK_DGRAM和SOCK_RAM 3种类型 protocol:协议。对于SOCK_STREAM套接字类型,该字段为IPPROTO_TCP或为0,对于SOCK_DGRAM套接字类型,该字段为IPPROTO_UDP或为0 三、bind()函数 bind()函数将套接字绑定到一个已知的地址。该函数声明如下: int b

15、ind( SOCKET s, const struct sockaddr FAR* name,int namelen ); s:套接字 name:地址 namelen:sockaddr结构长度 来源:魁网学习频道-计算机二级考试 四、listen()函数listen()函数将套接字设置为监听模式。listen()函数声明如下: int listen( SOCKET s, int backlog ); s:套接字 backlog:指定等待连接的最大队列长度(例如客户端的同时可连接数) 五、accept()函数 accept()函数实现接受一个连接请求的功能。accept()函数声明如下: SOCKET accept( int s; struct sockaddr FAR* addr, int

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号