- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中南大学
“通信网原理”实验报告
第二次实验
实验名称: 主机端口扫描程序设计
专业班级: 电子信息1003班
学生姓名: 刘素凯
学 号: 0909102207
指导教师: 陈科文
实验日期: 2012年11月26日
实验名称
主机端口扫描程序设计
一.实验目的和要求
实验目的
(1) 通过实验,进一步加深理解传输层服务的基本概念和?TCP?与?UDP?协议的工作原理;
(2) 掌握网络中主机端口扫描的设计思想与编程方法;
实验要求
(1) 编写一个主机端口扫描程序;
(2) 实现的程序为图形化界面,可以输入扫描的目的主机的端口范围(例如?1~128),输出所有端口的状态(Open?或?Close);
(3) 可扫描任意支持TCP/IP?的主机中的多个端口。点击“Tcp?Scan”按钮,扫描?TCP?端口;点击“Udp?Scan”按钮,扫描?UDP?端口;
(4) 按要求撰写《实验报告》(参阅本指导书的附录一“实验报告内容与格式”),并按时提交报告。
二.实验关键技术(包括编程环境和关键?API?函数简介,以及程序设计基本思想,比如要解决的关键问题、工作流程,或主要数据结构的定义、算法的描述)
1.编程环境:Visual C++6.0
Visual C++6.0是一款可视化的C、C++编译环境,并且它提供的MFC可以帮助我们快速的建立一个工程项目,在此基础上进行编程,大大的降低了开发难度与周期,是一款效率比较高的编译软件。
2.编译关键技术: 基于Socket的网络编程
Windows Socket规范定义了一套Microsoft Windows下的网络编程接口,它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。
在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows Sockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。
应用程序调用Windows Sockets的API实现相互之间的通讯。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。
3.API关键函数
(1) WSA Startup函数
Int WSA Startup(WORD wVersionRequested,LPWSADATA lpWSAData);
使用Socket的程序在使用Socket之前必须调用WSA Startup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSA Startup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。该函数执行成功后返回0。
(2) WSA Cleanup函数
Int WSA Cleanup(void);
应用程序在完成对请求的Socket库的使用后,要调用WSA Cleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。
(3) socket函数
SOCKET socket(int af,int type,int protocol);
应用程序调用socket函数来创建一个能够进行网络通信的套接字。第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置PF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第三个参数指定应用程序所使用的通信协议。该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表但是套接
原创力文档


文档评论(0)