华北电力大学网络综合实验 - 图文

更新时间:2023-09-28 15:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

综合实验报告

( 2013 -- 2014 年度第二学期)

名 称: 网络综合实验 题 目: 端口扫描程序和天气查询 院 系: 计算机系 班 级: 学 号: 学生姓名: 指导教师: 李丽芬 刘晓峰 曹锦纲 设计周数: 2 周

成 绩:

日期: 2014年6月14日

一、 目的与要求

1. 任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。

2. 目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。

3. 要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。

4. 学生要求人数:1人。

二、 主要内容

1. 编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。基本工作过程如下:

(1) 设定好一定的端口扫描范围;

(2) 设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通; (3) 创建socket,通过socket的connect方法来连接远程IP地址以及对应的端口; (4) 如果返回false,表示端口没有开放,否则端口开放。

三、 进度计划

序号 设计内容 任务布置及资料收集 软件方案设计与制定 编程实现 程序测试与修改,撰写报告 报告提交,软件验收 完成时间 第1周周一、周二 第1周周三至周四 第1周周周五至第2周周二 第2周周三至周五上午 周五下午 备注 1 2 3 4 5 四、设计成果要求

1. 完成规定的实验任务,保质保量;

2. 完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注重对实验思路的归纳和对问题解决过程的总结。

五、 考核方式

1. 平时成绩+验收答辩+实验报告; 2. 五级分制。 3.

1

学生姓名:艾壮

指导教师:李丽芬 刘晓峰 曹锦纲

2014 年6月 14日

(2)天气查询

1目的与要求

1.1任务:利用Web Service技术实现天气预报查询。

1.2目的:学习在网络应用程序中创建和使用Web服务。Web Service由于其跨平台的优越性,被越来越多的网站所重用。了解其实现原理及使用方法,有利于了解未来的网络开发技术。

1.3要求:利用Web Service 技术,实现一个查询实时天气预报的网站,要求界面美观,方便易用;通过课程设计学生应该具备初步分析、设计和开发网络应用软件的能力,具备分析与检查软件错误、解决和处理实验结果的能力。 1.4学生要求人数:1人。 2 主要内容

编写一个网站,可供用户查询全国主要城市实时的天气情况,实时信息可包括:天气、发布时间、气温、风向、风速、湿度、能见度、日出时间、日落时间以及未来24小时的天气预报。基本工作过程如下:

(1) 了解Web Service技术的原理和使用方法; (2) 寻找提供实时天气信息的Web服务;

(3) 利用Web Service完成查询网页与信息提供网站的链接; (4) 测试网页。 3 进度计划 序号 设计内容 任务布置及资料收集 软件方案设计与制定 编程实现 程序测试与修改,撰写报告 报告提交,软件验收 完成时间 第1周周一、周二 第1周周三至周四 第1周周周五至第2周周二 第2周周三至周五上午 周五下午 备注 1 2 3 4 5 4 设计成果要求

4.1完成规定的实验任务,保质保量;

4.2完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注

2

重对实验思路的归纳和对问题解决过程的总结。 五、 考核方式

4. 平时成绩+验收答辩+实验报告; 5. 五级分制。

学生姓名:艾壮

指导教师:李丽芬 刘晓峰 曹锦纲

2014 年6月 14日

二、综合实验正文 端口扫描程序的程序代码

#include #include #include #include

#pragma comment(lib,\

using namespace std;

typedef unsigned int uint; vector v; int main() {

WORD wsVersion = MAKEWORD(2,0); //socket的版本

WSADATA wsaData; //这个结构被用来存储被WSAStartup函数调用后返回的Windows Sockets数据。它包含Winsock.dll 执行的数据。

struct sockaddr_in sin; //sockaddr_in结构,表示socket address and internet style uint BeginPort; //开始端口 uint EndPort; //结束端口

3

uint CurrentPort; //正在扫描的端口 uint i=0;

char HostName[256]; //要扫描的主机

SOCKET s; //保存创建socket时的返回值 /////////////////////////

////////////////////创建一个套接口。 #include SOCKET PASCAL FAR socket( int af, int type, int protocol);

//af:一个地址描述。目前仅支持AF_INET格式,也就是说ARPA Internet地址格式type:新套接口的类型描述。

//protocol:套接口所用的协议。如调用者不想指定,可用0。

///////该函数如果调用成功就返回新创建的套接字的描述符

int OpenPort; //开放端口个数 OpenPort = 0;

cout<<\ cin>>HostName;

cout<<\ cin>>BeginPort;

cout<<\ cin>>EndPort;

//对用户输入的端口进行判断

while((BeginPort > EndPort || BeginPort < 0 || BeginPort >65535 || EndPort <0 || EndPort >65535))

{

cout<<\ cout<<\

4

cin>>HostName;

cout<<\ cin>>BeginPort;

cout<<\ cin>>EndPort; }

if(WSAStartup(wsVersion,&wsaData)) {

cout<<\ return -1; }

cout<

//循环判断范围内的端口,以判断端口是否开放 ,并记录结果 for(CurrentPort=BeginPort; CurrentPort<=EndPort;++CurrentPort) {

s = socket(AF_INET,SOCK_STREAM,0); //s用来记录socket的返回值。 if(s == INVALID_SOCKET) {

cout<<\ WSACleanup(); }

//给结构成员赋值

sin.sin_family = AF_INET;//可能是硬件地址。。 sin.sin_port = htons(CurrentPort); //当前扫描的端口号

sin.sin_addr.S_un.S_addr = inet_addr(HostName); //输入ip地址用的 //建立连结

if(connect(s,(struct sockaddr*)&sin,sizeof(sin)) == SOCKET_ERROR) {

cout<<\

5

closesocket(s);//连接失败

} else {

cout<<\ OpenPort ++;

v.push_back(CurrentPort);//用于数值的自动增加 vector(uint) v closesocket(s);

} }

cout<

cout<<\=======\

for(i=0;i

cout<

cout<

cout<<\=======\

closesocket(s); WSACleanup();

return 0; }

天气查询 前台界面代码:

<%@

Page

Language=\

AutoEventWireup=\

CodeBehind=\

6

Inherits=\

PUBLIC

\

XHTML

1.0

\

后台处理代码:

using System;

9

using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI;

using System.Web.UI.WebControls;

namespace WeatherProgram {

public partial class WebForm1 : System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e) {

}

protected void Button1_Click(object sender, EventArgs e) {

WeatherProgram.weather.WeatherWebServiceSoapClient w

=

WeatherProgram.weather.WeatherWebServiceSoapClient(\

string[] s = new string[23];

string c = this.TextBox1.Text.Trim(); s = w.getWeatherbyCityName(c); TextBox4.Text = s[12]; TextBox5.Text = s[14]; TextBox6.Text = s[0]; TextBox7.Text = s[2]; TextBox9.Text = s[13]; TextBox12.Text = s[18]; TextBox2.Text = s[6]; TextBox3.Text = s[4];

} } }

运行时图片:

new

10

运行界面

查询开启端口

11

检验开启端口

执行后生成的页面

12

查询保定当前天气

三、综合实验总结或结论

本次试验中,端口扫描其套接字是基本固定的,,实现过程中,一些函数式直接调用别人写好的函数,这个编程时其引用的不全,编译时总出错,百度后又加了一个引用,问题解决。编写天气查询时,用的是c#,以前接触较少,刚开始十分不顺利,在看了两本相关的书后,自己可以写但效果不理想,向别人请教后,界面得到了优化,对这个编程也比较了解,细节做得不是很好。 四、参考文献

[1] 程不功. ASP.NET.WEB开发教程 清华大学出版社,2011.09 [2]韩颖,卫琳ASP.NET动态网站开发教程,清华大学出版社(3)2013.2

13

本文来源:https://www.bwwdw.com/article/7njd.html

Top