在动态网站设计中(C#语言环境下),如何用结构实现动态数组2个网页中数据传递?例如...

构造.NET环境下的网页下载器 (2)-.NET教程,C#语言-虚拟主机资讯|虚拟主机动态
产品服务快速通道
----------------
==域名注册==
英文域名注册
中文域名注册
==网站推广==
==虚拟主机==
----------------
双线路虚拟主机
基本型虚拟主机
商用型虚拟主机
论坛型虚拟主机
功能型虚拟主机
Vip合租虚拟主机
虚拟主机性能对比
虚拟主机免费试用
机房速度测试
----------------
==租用托管==
服务器租用
----------------
==企业邮局==
购买企业邮局
----------------
==付款方式==
----------------
==联系我们==
您当前位置:->-> ->
构造.NET环境下的网页下载器 (2)-.NET教程,C#语言
作者:网友供稿
  西部数码-全国虚拟主机10强!20余项管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:&
三.网页下载器实例介绍:
  最后,我就综合以上.net网络编程的一些知识,向大家展示一个很好的实例。该实例是一个运用socket的基于同步模式的客户端应用程序,它首先通过解析服务器的ip地址建立一个终结点,同时创建一个基于流套接字的socket连接,其运用的协议是tcp协议。通过该socket就可以发送获取网页的命令,再通过该socket获得服务器上默认的网页,最后通过文件流将获得的数据写入本机文件。这样就完成了网页的下载工作了
程序的代码如下:
using system.
using system.
using system.windows.
using system.
using system.
using system.net.
using system.
using system.
namespace socketsample
{
/// &summary&
/// form1 的摘要说明。
/// &/summary&
public class form1 : system.windows.forms.form
private system.windows.forms.label label1;
private system.windows.forms.label label2;
private system.windows.forms.
private system.windows.forms.t
private system.windows.forms.
/// &summary&
/// 必需的设计器变量。
/// &/summary&
ponentmodel.container
components =
public form1()
// windows 窗体设计器支持所必需的
initializecomponent();
// todo: 在 initializecomponent
// 调用后添加任何构造函数代码
/// &summary&
/// 清理所有正在使用的资源。
/// &/summary&
protected override void dispose( bool disposing )
if( disposing )
if (components != null)
components.dispose();
base.dispose( disposing );
#region windows form designer generated code
/// &summary&
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// &/summary&
private void initializecomponent()
this.label1 = new system.windows.
forms.label();
this.label2 = new system.windows.
forms.label();
this.download = new system.windows.
forms.button();
this.serveraddress = new system.windows.
forms.textbox();
this.filename = new system.windows.
forms.textbox();
this.suspendlayout();
this.label1.location = new system.drawing.
point(16, 24);
this.label1.name = &label1&;
this.label1.size = new system.drawing.
size(80, 23);
this.label1.tabindex = 0;
this.label1.text = &服务器地址:&;
this.label1.textalign = system.drawing.
contentalignment.
this.label2.location = new system.drawing.
point(16, 64);
this.label2.name = &label2&;
this.label2.size = new system.drawing.
size(80, 23);
this.label2.tabindex = 1;
this.label2.text = &本地文件名:&;
this.label2.textalign = system.drawing.
contentalignment.
// download
this.download.location = new system.
drawing.point(288, 24);
this.download.name = &download&;
this.download.tabindex = 2;
this.download.text = &开始下载&;
this.download.click += new system.
eventhandler(this.download_click);
// serveraddress
this.serveraddress.location = new system.
drawing.point(96, 24);
this.serveraddress.name = &serveraddress&;
this.serveraddress.size = new system.
drawing.size(176, 21);
this.serveraddress.tabindex = 3;
this.serveraddress.text = &&;
// filename
this.filename.location = new system.
drawing.point(96, 64);
this.filename.name = &filename&;
this.filename.size = new system.
drawing.size(176, 21);
this.filename.tabindex = 4;
this.filename.text = &&;
this.autoscalebasesize = new system.
drawing.size(6, 14);
this.clientsize = new system.drawing.
size(376, 117);
this.controls.addrange(new system.windows.
forms.control[] {
this.filename,
this.serveraddress,
this.download,
this.label2,
this.label1});
this.name = &form1&;
this.text = &网页下载器&;
this.resumelayout(false);
#endregion
/// &summary&
/// 应用程序的主入口点。
/// &/summary&
[stathread]
static void main()
application.run(new form1());
private string dosocketget(string server)
//定义一些必要的变量以及一条要发送到服务器的字符串
encoding ascii = encoding.
string get = &get / http/1.1\r\nhost: &
+server+&\r\nconnection: close\r\n\r\n&;
byte[] byteget = ascii.getbytes(get);
byte[] recvbytes = new byte[256];
string strretpage =
//获取服务器相关的ip地址列表,其中第一项即为我们所需的
ipaddress hostadd = dns.resolve(server).
addresslist[0];
//根据获得的服务器的ip地址创建一个终结点,端口为默认的80
ipendpoint ephost = new ipendpoint
(hostadd, 80);
//创建一个socket实例
socket s = new socket(addressfamily.
internetwork, sockettype.stream,
protocoltype.tcp );
//用上面所取得的终结点连接到服务器
s.connect(ephost);
catch(exception
messagebox.show(&连接错误:&+se.
message,&提示信息&,messageboxbuttons.
if (!s.connected)
strretpage = &不能连接到服务器!&;
//向服务器发送get命令
s.send(byteget, byteget.length,
socketflags.none);
catch(exception
messagebox.show(&发送错误:&+ce.
message,&提示信息&,messageboxbuttons.
//接收页面数据,直到所有字节接收完毕
int32 bytes = s.receive(recvbytes,
recvbytes.length, 0);
strretpage = &以下是在服务器& + server +
&上的默认网页:\r\n&;
strretpage = strretpage + ascii.getstring
(recvbytes, 0, bytes);
while (bytes & 0)
bytes = s.receive(recvbytes,
recvbytes.length, socketflags.none);
strretpage = strretpage + ascii.
getstring(recvbytes, 0, bytes);
//禁用并关闭socket实例
s.shutdown(socketshutdown.both);
s.close();
private void download_click(object sender, system.
eventargs e)
//将所读取的字符串转换为字节数组
content=encoding.ascii.getbytes
(dosocketget(serveraddress.text));
//创建文件流对象实例
filestream
filestream
(filename.text,filemode.openorcreate,fileaccess.
readwrite);
//写入文件
fs.write(content,0,content.length);
catch(exception fe)
messagebox.show(&文件创建/写入错误:
&+fe.message,&提示信息&,messageboxbuttons.
其中主要的函数为dosocketget(),首先程序在响应&开始下载&的事件处理函数download_click(),调用dosocketget()函数,该函数完成了套接字的创建、连接、与主机的通讯-即获得主机上的网页、禁用、关闭等功能。在调用完dosocketget()函数后,download_click()函数创建一个filestream对象,并试图将dosocketget()函数返回的网页文件以字节数组的形式写到本机文件中,最终形成在本机上的一个html文件,这样就完成了一个网页文件的下载工作了。
  不过这个程序的功能比较简单,不能作为真正的网页浏览器用,网页文件下载后还是要用ie等浏览器才能打开。然而作为一个解释.net底层网络编程的实例绝对是一个好例子,所以希望读者能好好研究,同时读者还可以添加文件下载进度条等以完善本程序。
  注:以上程序在windows 2000服务器版、visual studio.net中文正式版下调试通过。
文章整理:西部数码--专业提供、服务
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
文章页数:&
??????????
??????????
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
版权所有 西部数码()
CopyRight (c) 2002~ all right reserved.
公司地址:四川省成都市金牛区一环路北一段99号环球广场24楼 邮编:610031
电话总机:028-08 38
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028- 财务QQ:
售前咨询QQ:2182518
售后服务QQ:C#语言环境下的SuperMap Objects 组件式开发_PDF图书下载_在线阅读_PDF免费电子书下载_第一图书网
C#语言环境下的SuperMap Objects 组件式开发
出版社:王兴举 中国铁道出版社
(2013-05出版)&&
王兴举,1978年生,辽宁海城人,工学博士,副教授。年留学日本岐阜大学,师从交通领域国际著名专家宫城俊彦教授和高木朗羲教授,先后获得交通工程专业的硕士和博士学位。2008年石家庄铁道大学(原石家庄铁道学院)交通运输学院工作。主要从事交通地理信息系统及震后应急交通方向的研究,主持国家自然科学基金青年基金、河北省自然科学基金青年基金、教育部留学归国启动基金等课题10多项,发表第一作者论文22篇,其中被EI索引论文13篇。东亚交通运输学会会员、日本土木学会会员、日本交通工程研究会会员、石家庄市海外人才联谊会理事。《交通运输工程学报》、《AsianTransport Studies》《Journal of Control Science and Engineering》、《Journal of Convergence Information Technology》、《Advances in Information Sciences and Service Sciences》等学术期刊的论文审阅人。
1 C#简介 1.1 C#概述 1.1.1 什么是c#语言 1.1.2 NET Framework 1.1.3 Vi sual c#的集成开发环境(IDE) 1.2 C#程序设计基础 1.2.1 标识符 1.2.2 c#中数据类型 1.2.3 c#中的变量和常量 1.2.4 c#运算符和表达式 1.2.5 循环型语句 1.2.6 转移语句 1.3 小结 2 SuperMap Obiects概述 2.1 组件与组件式GIS 2.2 Super。Map Objects的基本概念 2.3 SuperMap 0bjects的控件和对象 2.3.1 核心组件(superMap Core Control s) 2.3.2 三维组件(superMap 3D Contr01) 2.3.3 拓扑组件(superTopology Contr01) 2.3.4 布局组件(superLayout Contr01) 2.3.5 分析组件(superAnalyst Contr01) 2.3.6 辅助开发组件 2.4 SuperMap 0bjects的主要特点 2.5 SuperMap Objects的主要功能 2.6 SuperMap Objects 5.2软件的安装 2.6.1 安装软硬件环境要求 2.6.2 安装superMap 0bjects 2.6.3 许可信息配置 2.6.4 本地单机加密锁配置 2.6.5 网络加密锁配置 2.6.6 许可文件 2.7 小结 3 入门 3.1 数据准备 3.2 创建一个新工程【MyFirstSuperMap】 3.3 添加SuperMap Objects控件 3.4 【MyFirstSuperMap】窗体设计 3.5 【MyFirstSuperMap】窗体代码 3.6 窗体运行 3.7 小结 4 数据管理 4.1 浏览、编辑属性及新建、删除字段 4.1.1 数据准备 4.1.2 创建一个新工程【EditAttribute】 4.1.3 【EditAttribute】窗体 4.1.4 【Display Attribute】窗体 4.1.5 【ModifyTable】窗体 4.1.6 运行结果 4.2 图查属性、属性查图 4.2.1 数据准备 4.2.2 创建一个新工程【Identity】 4.2.3 【Identity】窗体 4.2.4 运行结果 4.3 选定图层、查看属性 4.3.1 数据准备 4.3.2 创建一个新工程【SUPERGRIDVIEw】 4.3.3 【SUPERGRIDVIEw】窗体 4.3.4 运行结果 4.4 小结 5 地图管理 5.1用SuperLegend管理图层 5.1.1 数据准备 5.1.2 创建一个新工程【Legend】 5.1.3 【Legend】窗体 5.1.4 运行结果 5.2 视图定位、鹰眼透视 5.2.1 数据准备 5.2.2 创建一个新工程【【,ocat ion】 5.2.3 【Location】窗体 5.2.4 运行结果 5.3 点、线、面、文本和背景风格设置 5.3.1 数据准备 5.3.2 创建一个新工程【style】 5.3.3 【style】窗体 5.3.4 运行结果 5.4 工作空间的管理 5.4.1 数据准备 5.4.2 创建一个新工程【superWks pMa.nager】 5.4.3 【SuperwkspManager】窗体 5.4.4 运行结果 5.5 小结 6 查询跟踪 6.1 空间查询 6.1.1 数据准备 6.1.2 创建一个新工程【SpatialQuery】 6.1.3 【SpatialQuery】窗体 6.1.4 运行结果 6.2 SQL查询 6.2.1 数据准备 6.2.2 创建一个新工程SQL 6.2.3 【frmMain】窗体 6.2.4 【sqlQuery】窗体 6.2.5 【DisplayQuery】窗体 6.2.6 【newDataset】窗体 6.2.7 运行结果 6.3 对象的闪烁 6.3.1 数据准备 6.3.2 创建一个新工程【blink】 6.3.3 【blink】窗体 6.3.4 运行结果 6.4 在鼠标点击处加入文本到跟踪层 6.4.1 数据准备 6.4.2 创建一个新工程【Addrext】 6.4.3 【Addrext】窗体 6.4.4 运行结果 6.5 小结 7 空间分析 7.1 缓冲查询分析 7.1.1 数据准备 7.1.2 创建一个新工程【BufferQuery】 7.1.3 【BufferQuery】窗体 7.1.4 运行结果 7.2 数据裁剪 7.2.1 数据准备 7.2.2 创建一个新工程【clipDataset】 7.2.3 【frmMain】窗体 7.2.4 【NewDataset】窗体 7.2.5 运行结果 7.3 距离、面积测量分析 7.3.1 数据准备 7.3.2 创建一个新工程【survey】 7.3.2 【survey】窗体 7.3.4 运行结果 7.4 拓扑分析功能 7.4.1 数据准备 7.4.2 创建一个新工程【Topo】 7.4.3 【frmMain】窗体 7.4.4 【DoTopo】窗体 7.4.5 运行结果 7.5 小结 8 专题图制作 8.1 数据准备 8.2 创建一个新工程【17hemeMap】 8.3 【ThemeMap】窗体 8.3.1 【ThemeMap】窗体设计 8.3.2 【专题图范例工程】窗体代码 8.4 运行结果 8.5 小结 9 网络分析 9.1 数据准备 9.2 创建一个新工程【Network Analysis】 9.3 【MainForm】窗体 9.3.1 【Ma inForm】窗体设计 9.3.2 【主窗体】窗体代码 9.4 【AnalystSetting】窗体 9.4.1 【Analystsetting】窗体设计 9.4.2 【Analystsetting】窗体代码 9.5 【PathAnalyst】窗体 9.5.1 【PathAnalyst】窗体设计 9.5.2 【PathAnalyst】窗体代码 9.6 运行结果 9.7 小结 参考文献
5.内嵌大型空间数据库引擎 SuperMap Objects内置了SuperMap GIS最新空间数据库引擎技术——SuperMap SDX+5。 6.面向对象与面向拓扑相结合 SuperMap Objects支持以拓扑结构和面向对象两种方式组织空间数据,兼有二者之长,为系统中数据组织提供了更多的选择,有利于降低系统设计开发难度。 7.GIS与CAD相结合 GIS和CAD数据结构各有自己的优势,在GIS系统中都有广泛的应用。SuperMap Objects的数据模型同时提供了GIS和CAD两种类型,充分发挥它们各自的特点和优势。同时,SuperMap Objects还吸收了编辑智能捕捉等CAD技术,大大增强了SuperMap Objects的功能,使之可堪与CAD软件相媲美。 8.易与其他系统集成 GIS已经成为信息技术(IT)的一部分,越来越多的行业都在或将要使用GIS;同时越来越多的GIS应用也需要集成办公自动化(OA)、通信等技术。SuperMap Objects由一系列基于ActiveX技术标准的组件构成,可以在各种流行的开发语言中与OA、MIS等系统随意集成,相互协同,提供完善的系统功能。 9.适度的封装“粒度” 封装“粒度”是GIS组件接口很重要的指标,它对组件提供的接口是否易用有重大关系。如果“粒度”封装过粗,则在开发时很难做到功能的扩展和灵活开发;如果“粒度”过细,则会导致对象数量过于庞大,这样一来,就有可能造成以下影响:一方面导致系统初始化速度慢,每个COM对象的初始化都需要消耗一定的CPU和内存资源;另一方面导致理解和掌握该组件群非常困难,即使进行基本功能开发也会花大量成本编写代码。 SuperMap Objects组件对象封装粒度适中,使用灵活且易于掌握。SuperMap Objects 5大型全组件式GIS软件开发平台功能强大,由一系列控件组成,既可以协同工作,也可以任意裁减,具有高度的伸缩性和灵活性。 由于SuperMap Objects具有SuperMap GIS的全部特点,又是标准的ActiveX控件,可以非常方便地和其他功能控件进行无缝集成。这就大大减小了开发难度,缩短了开发周期,从而节约了开发投资,提高了系统的稳定性。GIS平台开发软件以控件形式提供功能,还非常有利于二次开发者开发具有自己知识产权的应用产品而不会打上SuperMap的烙印。同时,SuperMap Objects提供了非常丰富的开发接口,完全可以满足从中小型到大型项目对GIS功能的不同需要。一句话概括,SuperMap Objects 5是一种够用而且好用的GIS二次开发平台,借助它,可以轻松、灵活地构建各种大型的GIS应用系统,开发自己的GIS产品。
《C#语言环境下的SuperMap Objects组件式开发》共分为九章,其中第一章和第二章分别为C#简介和SuperMapObjects概述,第三章至第九章为程序实例,分别介绍了入门程序、数据管理、地图管理、查询跟踪、空间分析、专题图制作和网络分析。
评论、评分、阅读与下载
用户评论&(总计0条)
250万本中文图书简介、评论、评分,PDF格式免费下载。
第一图书网() @ 2014C#实现动态图表中数据的滚动(2)
大家的留言是一种鼓励,真的很想把大家希望"继续"的话题写下去,无奈的是老板不让我专下心来做一件事情,所以我的博文内容也就随着我手里的工作内容的变动而变动.不管写什么,能给大家一些帮助,我也很快乐.
前一篇给出了我开始使用这个ZedGraph控件时自己写的Sample,接下来又研究了一下,找了一些我需要的功能进行调试,效果还算满意.
下面的代码是我写的Sample,把控件的部分代码show出来给大家做个参考.
public int InitZedGraph()
&&&&&&&&&&&
ZedGraph.GraphPane tPane = zedGraphObj.GraphP
&&&&&&&&&&&
zedGraphObj.IsEnableVZoom =
&&&&&&&&&&&
zedGraphObj.IsEnableHZoom =
&&&&&&&&&&&
tPane.Title.Text = "厚度数据显示图";
&&&&&&&&&&&
tPane.XAxis.Title.Text = "Point";
&&&&&&&&&&&
tPane.YAxis.Title.Text = "uM";
&&&&&&&&&&&
tPane.Fill = new Fill(Color.White, Color.FromArgb(153, 153, 255),
&&&&&&&&&&&
tPane.XAxis.MajorGrid.IsVisible=
&&&&&&&&&&&
tPane.XAxis.MajorGrid.Color = Color.G
&&&&&&&&&&&
tPane.XAxis.MajorGrid.PenWidth = 1;
&&&&&&&&&&&
tPane.YAxis.MajorGrid.IsVisible =
&&&&&&&&&&&
tPane.YAxis.MajorGrid.Color = Color.G
&&&&&&&&&&&
tPane.YAxis.MajorGrid.PenWidth = 1;
&&&&&&&&&&&
tPane.Chart.IsRectAuto =
&&&&&&&&&&&
tPane.AddCurve("Reference", mReferenceList, Color.Red,
SymbolType.None);
&&&&&&&&&&&
tPane.AddCurve("Measurement", mMeasurementList, Color.Blue,
SymbolType.None);
&&&&&&&&&&&
tPane.XAxis.Scale.Min = 0;
&&&&&&&&&&&
tPane.XAxis.Scale.Max = 300;
&&&&&&&&&&&
tPane.IsAlignGrids =
&&&&&&&&&&&
tPane.AxisChange(this.CreateGraphics());
&&&&&&&&&&&
private void OnTest(object sender, EventArgs e)
&&&&&&&&&&&
int&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
double&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
ZedGraph.GraphPane&&&&&
tPane = zedGraphObj.GraphP
&&&&&&&&&&&
ZedGraph.PointPair[]&&&
tPointPairArr=new ZedGraph.PointPair[0];
&&&&&&&&&&&
tPane.XAxis.Scale.Min = 0;
&&&&&&&&&&&
tPane.XAxis.Scale.Max = 300;
&&&&&&&&&&&
Random ran = new Random();
&&&&&&&&&&&
lblPF.BackColor =
System.Drawing.Color.FromArgb(((int)(((byte)(153)))),
((int)(((byte)(153)))), ((int)(((byte)(255)))));
&&&&&&&&&&&
lblPF.ForeColor = Color.B
&&&&&&&&&&&
lblPF.Text = "测量";
&&&&&&&&&&&
//-----------------------------------------------------------------
&&&&&&&&&&&
LineItem tCurve1 = (ZedGraph.LineItem)tPane.CurveList[0];
&&&&&&&&&&&
tCurve1.Clear();
&&&&&&&&&&&
LineItem tCurve2 = (ZedGraph.LineItem)tPane.CurveList[1];
&&&&&&&&&&&
tCurve2.Clear();
&&&&&&&&&&&
Array.Resize(ref tPointPairArr, 0);
&&&&&&&&&&&
BeginTest();
&&&&&&&&&&&
//-----------------------------------------------------------------
&&&&&&&&&&&
for (int i = 0; i & 500; i++)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
if (mReferenceList.Count & 300)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
tPane.XAxis.Scale.Min +=1;
&&&&&&&&&&&&&&&&&&&
tPane.XAxis.Scale.Max +=1;
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
x = i + 5;
&&&&&&&&&&&&&&&
y1 = 1.5 + Math.Sin((double)i * 0.2);
&&&&&&&&&&&&&&&
y2 = ran.NextDouble()*3;
&&&&&&&&&&&&&&&
mReferenceList.Add(x, y1);
&&&&&&&&&&&&&&&
mMeasurementList.Add(x, y2);
&&&&&&&&&&&&&&&
if (tPointPairArr.Length &
mReferenceList.Count)
&&&&&&&&&&&&&&&&&&&
Array.Resize(ref tPointPairArr, mReferenceList.Count);
&&&&&&&&&&&&&&&
tPointPairArr[i] = new PointPair();
&&&&&&&&&&&&&&&
tPointPairArr[i].X =
&&&&&&&&&&&&&&&
tPointPairArr[i].Y = y1;
&&&&&&&&&&&&&&&
if (i % 10 == 0)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
tPane.AxisChange(this.CreateGraphics());
&&&&&&&&&&&&&&&&&&&
zedGraphObj.Invalidate();
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
EagleApi.EagleWin32Api.Sleep_Egl(1);
&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。怎么添加多一个语言的网站?_百度知道

我要回帖

更多关于 用结构实现动态数组 的文章

 

随机推荐