VS2005网络编程

合集下载

VS2005快速开发

VS2005快速开发

第一步创建一个新工程:Query1创建一个工作目录C:\MyProject2.启动Visual Studio20053.在工作目录C:\MyProject 下创建一个新应用: Query注:在SDK选择中,只有Pocket PC2003和Smartphone2003是安装VS2005时自带的,Mobile 5.0的SDK是需要另外安装的,也就是在工程新建之前就安装这个SDK,常用SDK在网上可以下载到。

选择使用动态链接库第二步配置开发环境2.1 设置头文件/库文件搜索路径●设置头文件搜索路径:Project ->Query Property Pages ->c/c++->General ->AdditionalInclude Directories,如下图。

●在此路径下加上DOTNET2005:Project ->Query Property Pages->c/c++->Preprocessor->Preprocessor Definitions,如下图。

Library Directories,如下图。

2.2 在StdAfx.h中包含eSuperMap 5.3 类库头文件第三步添加工作空间、地图窗口实例3.1 在“C Query App”中定义变量, 如下图:3.2 在“C Query View”中定义成员变量,如下图:第四步设置菜单项并生成消息响应函数利用eSuperMap,可以很方便地进行地图的基本操作,如放大、缩小、漫游、全幅显示、地图刷新等等。

下面以放大、缩小、漫游、全幅显示、地图刷新功能为例予以说明。

4.1 设置文件菜单注:修改事件的ID时可以直接在右侧的Menu Editor IMenuEd工具中完成,如下图4.2 地图操作菜单4.3 生成菜单消息响应函数1. 选中CQueryView,点击类似闪电的按钮,可以在这里生成消息响应函数,如下图:可以删除消息响应函数也可以进入编辑消息代码的界面,如下图4.4 生成鼠标消息响应函数选中CQueryView,点击如下图的按钮, 可以生成系统消息响应函数如OnLButtonDown、OnLButtonUp函数等,如下图:第五步实现消息映射函数void CQueryView::OnDraw(CDC*pDC){CQueryDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rcClient;GetClientRect( &rcClient );//显示地图m_MapWnd.OnDraw(pDC, rcClient,rcClient);}void CQueryView::OnFileOpen(){//默认打开第一幅地图,否则新建Untitled地图,等待添加图层CFileDialog dlgFile(true, _T("pmw|pmw|*.*"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("WorkSpace Files (*.pmw)|*.pmw") );if( dlgFile.DoModal() == IDOK ){//如果已经打开工作空间文件,则关闭if(theApp.m_WorkSpace.IsOpen()){theApp.m_WorkSpace.Close();m_MapWnd.Close();}//获得图形文件的完整路径及文件名CString strFileName = dlgFile.GetPathName();//打开工作空间if( theApp.m_WorkSpace.Open( strFileName ) ){//与地图窗口关联m_MapWnd.OnInitialUpdate( &theApp.m_WorkSpace, this );CSeMaps *pMaps = theApp.m_WorkSpace.GetMaps();if( pMaps ){CSeMapDef MapDef;//有地图,则打开第一幅if ( pMaps->GetMapCount() != 0 ){CDlgSelect dlg;dlg.m_bMap = true;if ( dlg.DoModal() == IDOK ){if( pMaps->GetMap( dlg.m_strMapName, MapDef ) ){if(m_MapWnd.OpenMap(MapDef)){m_MapWnd.Refresh();}}}}}}}}void CQueryView::OnFileClose(){m_MapWnd.Close();theApp.m_WorkSpace.Close();m_MapWnd.Refresh();m_bFileOpened = false;}void CQueryView::OnMapZoomin(){//放大m_MapWnd.SetAction(CSeDrawParameters::uaZoomIn);}void CQueryView::OnMapZoomout(){//缩小m_MapWnd.SetAction(CSeDrawParameters::uaZoomOut);}void CQueryView::OnMapZoomfree(){//自由缩放m_MapWnd.SetAction(CSeDrawParameters::uaZoomFree);}void CQueryView::OnMapPan(){//平移m_MapWnd.SetAction(CSeDrawParameters::uaPan);}void CQueryView::OnMapViewEntire(){//整幅显示地图m_MapWnd.SetAction(CSeDrawParameters::uaNull);m_MapWnd.ViewEntire();}void CQueryView::OnMapRefresh(){//刷新m_MapWnd.SetAction(CSeDrawParameters::uaNull);m_MapWnd.Refresh();}void CQueryView::OnMapPointSelect(){//点选m_MapWnd.SetAction(CSeDrawParameters::uaPointModeSelect); }void CQueryView::OnMapRectSelect(){//框选m_MapWnd.SetAction(CSeDrawParameters::uaRectModeSelect); }void CQueryView::OnLButtonDown(UINT nFlags, CPoint point){m_MapWnd.OnLButtonDown(nFlags,point);//重载CView::OnLButtonDown(nFlags, point);}void CQueryView::OnLButtonUp(UINT nFlags, CPoint point){m_MapWnd.OnLButtonUp(nFlags,point);//重载CView::OnLButtonUp(nFlags, point);}void CQueryView::OnMouseMove(UINT nFlags, CPoint point){m_MapWnd.OnMouseMove(nFlags,point);//重载CView::OnMouseMove(nFlags, point);}第六步下载程序所依赖的库和数据到模拟器中1.Tools -> Remote File Viewer , 选择Pocket PC 2003 Emulation2. 点击Program Filees 目录,准备往Pocket PC 2003 Emulation\Program Filees\目录导入执行程序所依赖的库(RSFC\Bin\VC8\PocketPC2003\Emulator动态库),如下图:3. 往 Pocket PC 2003 Emulation\Program Filees\ 目录逐个导入执行程序所依赖的库( emulator 动态库 ), 如下图:4. 往Pocket PC 2003 Emulation\My Documents\ 目录逐个导入所使用的数据, 如下图:如下图,将该路径下四个选中的VS 2005库文件导入到模拟器中导入eSuperMap的lic文件第七步:编译、运行程序●部署成功●打开北京市地图至此,eSuperMap开发的简单的范例工程就已经做好,这里只是做了一个简单的介绍,抛砖引玉,希望大家在此基础上利用eSuperMap开发出更加实用优秀的工程。

第02-01节 VS2005程序编译环境设置

第02-01节 VS2005程序编译环境设置

VC++程序编译环境设置•程序编译环境概述序编境概•General•Debug•c/c++•Link•Build Event大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。

原因是多方面的。

大多数情况下,我们只停留在使用它,而不会想去了解多方面的。

大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。

因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。

我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。

反反复复调试设置基础类用法和目录。

可以设置连接MFC库的方式(静态或动态)。

如果是动态库的方式(静态或动态)如果是动态连接,在你的软件发布时不要忘了带上MFC的DLL。

Output directories 中Intermediate files:用于设置编译生成的中间文件存放目录.I t di t fil如果要按外部制作文件(exported makefile)方式为每个工程配置导出不同的可建立项目,请选择Allow per-configuration置导出不同的可建立项目请选择Allow per configuration dependencies.可以设置调试时运行的可执行文件,以及命令行参数等.General:一些总体设置。

AdditionalIncludeDirectories:添加到目录列表中的目录,该列表中的目录用于搜索包含文件。

于搜索包含文件若要添加多个目录,请多次使用此选项。

直到找到指定包含文件时才停止搜索这些目录。

可以将此选项与“忽略标准包含路径”选项一起使用。

编译器按下列顺序搜索目录包含源文件的目录编译器按下列顺序搜索目录:(1)包含源文件的目录。

(2)用/I选项指定的目录(按照CL 遇到它们的顺序排列)。

(3)在INCLUDE环境变量中指定的目录。

Warning level:用来控制警告信息,其中Level 1是最严重的级别;Warnings Warning level:用来控制警告信息其中Level1是最严重的级别Warningsas errors将警告信息当作错误处理;Optimizations是代码优化,可以在Category的Optimizations项中进行更细的设置;DebugInformationFormat :生成调试信息:disable,不产生任何调试信息(编译比较快);C 7.0-Compatible,记录调试器用到的所有符号信息到文件和文件;g,创建文件记录所有调试.OBJ.EXE Program Database.PDB信息;Program Database for "Edit & Continue",创建.PDB文件记录所有调试信息,并且支持调试时编辑。

VS2005下的64位编程与移植

VS2005下的64位编程与移植

VS2005下的64位编程与移植VS2005下的64位编程与移植Mar 18th, 2012 | Comments最近有个项目需要将32位下的代码移植到64位下,之前没有做过这方面的工作,特别向同事请教了这方面的知识,在此记录下来。

VS2005下64位编程环境1.VS2005安装时要勾选X64 Compilers and Tools,如果安装时忘记了,则可以重新打开VS2005安装程序来添加;2.VS2005X64编程环境设置3.在VS2005的Build菜单下选择Configuration Management;4.在Configuration Management对话框中的Active solution platform下选择New;5.在New Solution Platform中的Type or select the new platform下选择x64,OK。

对于没有汇编的程序,上述设置就可以了。

但如果代码中有汇编代码,则还需要Project下的Custom Build Rules中切换到MASM64 Bulid Rule。

缺省情况下,VS2005没有提供到MASM64 Bulid Rule,需要将原来的masm.rules(在C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults文件夹下)文件拷贝一份,重新命名为masm64.rules,并在VS2005中修改rule中的ml.exe为ml64.exe 即可。

上面设置好之后,就可以在Win32和X64平台间自由切换,但要注意的是,切换的时候也需要将Custom Build Rules切换到相应的平台下。

VS2005下64位编程的注意事项•X64平台下,不支持内联汇编,必须将汇编代码提取到独立的.asm文件中去;•指针不再是32位,而是64位,汇编代码中涉及32位寄存器间接寻址的,移植时需要修改;•32位的寄存器被扩展为64位,又增加了一些新的寄存器;•函数参数的传递与32位下汇编不再相同,而是前4个参数分别通过RCX, RDX, R8, R9来传递,其他的参数通过堆栈来传递;上述的应该是最基本的,要在64位平台中进行编程,还需要了解更多的这方面的知识。

VS2005编程环境介绍

VS2005编程环境介绍



然后点击完成,即创建好了工程,后面就只可 以添加程序文件和代码了。 界面见后面
编程第二步:创建工程
控制台应用程序 空项目
编程第三步:添加程序文件

选中项目,右击,在弹出菜单中选择菜单
� �
新建项: 用于新建程序文件,并添加到工程中 现有项:用于添加已存在的程序文件到工程中 在弹出窗口中选中代码 在右边的模板中选择C++文件 名称中输入你要创建的文件名,一定要写后缀名 .c 位置是你创建的工程所在位置
编程第二步:创建工程
win32控制台应用程序 Visual C++
win32
Байду номын сангаас
项目名称
编程第二步:创建工程

在前面确定了工程类型后,点击确定出现如下界面:
编程第二步:创建工程

在上一界面上点击下一步,得到如下界面,在 此界面中,选择如下参数:
� � �
应用程序类型:控制台应用程序 添加公共头文件:不选 附加选项:空项目
创建工程在下面的名称里输入你要建的项目名称如cproject在下面的位置里选择到你刚才创建的目录如e
VS2005编程环境介绍
姚望舒
编程环境的资源

免费下载网址

/zhcn/express/aa975050.aspx
编程第一步
� �
在数据盘(D盘orE盘)创建一个文件夹,如yws 打开vs2005
编程第六步:运行程序

从调试->开始执行(不调试)来运行程序
编程第七步:调试程序

插入断点
� �
将光标移动到要插入断点的行,右击鼠标 选择断点菜单->插入断点,断点插入到该行 将光标移动到要已有断点的行,右击鼠标 选择断点菜单->禁用断点,取消该行的断点

vs2005下安装部署vc(MFC)程序(工程)必读

vs2005下安装部署vc(MFC)程序(工程)必读

方法一:该打包过程在vs2005中完成,但也适用于vs2008,程序是用c#写的。

1.新建安装和部署。

打开你所写的项目,在解决方案上右键->添加->新建项目。

如图:选择其他项目类型->安装和部署->安装项目。

在名称中把名字改为你所希望的名字,然后确定。

如图:2.确定后打开文件系统,然后单击应用程序文件夹,在右边空白处右键->添加->项目输出。

如图:3.选择主输出,然后确定。

这时文件系统中的应用程序文件夹如图:4.在刚添加的主输出上右键,创建其快捷方式。

可以重命名也可不重命名。

这里命名为PicSee。

如图:5.剪切刚创建的快捷方式,然后单击用户的程序菜单,在其上右键,添加,文件夹,重命名文件夹。

这个文件夹名字就是你在开始,所有程序中显示的名字。

然后单击刚创建的文件夹,在右边空白处粘贴快捷方式,安装好程序后,这个快捷方式会出现在所有程序中。

如图:6.像上面一样再创建一个快捷方式,剪切,然后单击用户桌面,粘贴。

安装完程序后,这个快捷方式出现在桌面。

如图:7.右击左边的"应用程序文件夹"打开属性对话框:将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉,不然的话做好的安装程序默认安装目录会是"c:\programm file\你的用户名\安装解决方案名称"。

8.右键你的安装项目名,属性。

如图:在打开的属性页中,选择"系统必备",在打开的系统必备页中,选中如下图中的选择项,选上以后,在生成的安装文件包中包含.netframework组件,然后确定。

9.改变桌面和开始->所有程序中该程序的默认图标。

在应用程序文件夹右边空白处,右键->添加->文件,添加一个ico文件。

如图:打开用户的程序菜单->PicSee,在右边的快捷方式上右键,属性窗口。

ASPNET网页设计与网站开发第1章 ASPNET与VS 2005开发平台

ASPNET网页设计与网站开发第1章 ASPNET与VS 2005开发平台
第1章 与VS 2005开发平台
第1章 与VS 2005开发平台
1.1 与VS 2005 1.2 安装VS 2005集成开发环境 1.3 开发 Web应用程序的一般流程
第1章 与VS 2பைடு நூலகம்05开发平台
Visual Studio 2005(简称VS2005) 功能强大的集成开发平台,可以完成 Windows 应用 程序开发、 Web 应用程序开发、设备应用程序开发 以及与其相关的数据库应用处理等开发任务,同时 还提供了各种应用程序的发布安装支持。 是VS2005开发平台的一部分,它提供的许 多Web开发模型,能够快速地开发出Web应用程序中 所需的复杂功能。
1.3 开发 Web 应用程序的一般流程
一般开发流程如下图所示
创建 Web 应用程序 系统数据库实现
基本类文件实现 应用程序 开发调试 Web 页面实现
应用程序发布
图片制作
素材收集
1.3 开发 Web 应用程序的一般流程(续)
举例说明开发 Web应用程序的步骤: 例1-1 创建一个简单的 Web应用程序,当程序运
1.1 与VS 2005
发展历史
2002年3月,随着Visual 中文版的出现, 1.0诞生 2003年,发布了Visual 2003(简称VS. NET 2003) 2005年底,推出基于.NET 2.0框架的VS 2005开发平 台,从1.0版升到2.0版
行时,在页面上显示“Hello World!”字符串。
1.1 与VS 2005(续)
主要功能: 设计Web窗体 样式表 母版页 数据库访问 用户控件 XML WebService 网站生成与发布
1.2安装VS 2005集成开发环境

在VS2005上编写、运行、调试C语言程序

在VS2005上编写、运行、调试C语言程序

在VS2005上编写、运行、调试C语言程序目录前言:关于C/C++编译器的简单介绍.............................- 2 - 1.编辑、编译与运行.........................................- 3 - 2.调试技术.................................................- 8 - 设置断点.................................................- 9 - 调试运行.................................................- 9 - 快速监视................................................- 10 - 3.小结....................................................- 13 - 附:VS2005快捷键大全期.....................................- 13 -前言:关于C/C++编译器的简单介绍Turbo C 2.0发布于1989年,对历史并不太长而发展却神速的IT业来说,确实是古董级的软件了。

但它几乎是最后一个专门为C语言设计的开发环境,具备学习C语言的一切条件,没有任何非C语言的东西干扰初学者,所以一直被各大高校的C语言课堂采用。

C++的发展使C++的开发环境大行其道。

因为C++几乎完全兼容C语言,两者无论编译器还是编辑器、调试器都可以用同一套程序实现,而且C++共享C的库函数,很多软件还是用两者混合编程实现,所以基本所有的C++环境都同时支持C语言。

Dev-c++是Windows平台下C++ IDE开发环境,属于共享软件。

界面亲切优雅,size也不大,其后续版有中文语言支持,无需汉化。

第一讲 VS2005简介

第一讲 VS2005简介
湖南文理学院计算机学院——屠添翼 屠添翼 湖南文理学院计算机学院
解决方案和项目
一个解决方案包含一个或多个项目。 一个解决方案包含一个或多个项目。 其中一个项目被设置成启动项目 启动项目。 其中一个项目被设置成启动项目。 项目之间调用需添加引用 引用。 项目之间调用需添加引用。
湖南文理学院计算机学院——屠添翼 屠添翼 湖南文理学院计算机学院
湖南文理学院计算机学院——屠添翼 屠添翼 湖南文理学院计算机学院
程序集
可以看作是一个或多个物理程序模块的组合, 可以看作是一个或多个物理程序模块的组合 , 它是.NET应用程序打包、运行和发布的最小 应用程序打包、 它是 应用程序打包 单位。 单位。 .NET类库中的对象和组件都包含在各个程序 类库中的对象和组件都包含在各个程序 集中。 集中。 最基本的一个程序集名为System。 最基本的一个程序集名为 。
2000年6月22日,由Microsoft正式推出。 年 月 日 正式推出。 正式推出
湖南文理学院计算机学院——屠添翼 屠添翼 湖南文理学院计算机学院
公共语言架构( 公共语言架构(CLI) )
通用类型系统(CTS); 公共语言规范(CLS); 通用中间语言(CIL); 其他相关的标准化文件、格式、规定等。
湖南文理学院计算机学院——屠添翼 屠添翼 湖南文理学院计算机学院
返回
using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsApplication1 { static class Program { /// <summary> /// 应用程序的主入口点。 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } 生成一个窗体的实例 } 返回 湖南文理学院计算机学院——屠添翼 湖南文理学院计算机学院 屠添翼 }

VS2005各语言编程介绍

VS2005各语言编程介绍

class A //声明基类A { public int nA=1; Java类的继承 public void show() { System.out.println("Member of A"); } 输出: } class B extends A //A为基类,派生B类 Member of A { public int nB=2; } Member of A class C extends B //派生类C声明 Member of A { public int nC=3;} c.nA=5 public class TestInheritance c.nB=2 { c.nC=3 public static void main(String[] args) { A a = new A(); //定义A类对象a,并实例化。 B b = new B(); //定义B类对象b,并实例化。 C c = new C(); //定义C类对象c,并实例化。 c.nA=5; //使用继承自间接基类的属性 a.show(); b.show(); c.show(); System.out.println("c.nA="+c.nA); System.out.println("c.nB="+ c.nB); System.out.println("c.nC="+ c.nC); } }
Java中是:import
End Sub End Module
VB编译器为xe
VJ#程序举例
J#程序的扩展名为*.jsl
public class Hello { public static void main(String[] args) { for(int i=1;i<10;i++) System.out.println("Hello World,你好,世界!"); } }

配置Microsoft Visual SourceSafe 2005的Internet访问

配置Microsoft Visual SourceSafe 2005的Internet访问

配置Microsoft Visual SourceSafe 2005的Internet访问大家可能看这个很眼熟要是你最近在网上找关于vss2005 配置的资料,的确这个是我从网站上复制下来的。

但是我想说的是我在这个基础上进行了细化把这里面没有给大家提到的地方及关键点像大家分享一下!步骤0:安装前的准备事项服务器端:因为Internet访问是通过Web Service实现的,所以安装前要先配置安装好IIS。

安装VSS2005好像可以自动安装.Net Framework 2.0,不过,我是事先安装好.Net Framework 2.0并启用 2.0的。

客户端:只有Visual Studio 2005默认支持VSS的Internet访问,所以客户端还要安装VS2005。

(我用的是vs2010亲测好使!不过我安装了一个补丁,VS80-KB976375-X86-INTL.exe)下载地址:/KB976375/Release/ProjectReleases.aspx?ReleaseId=3479步骤1:安装VSS2005我建议大家安装的时候选择完整安装特别是服务器端。

安装VSS2005一路Next就OK了。

服务器和客户端都要安装。

步骤2:创建VSS数据库,并启用Internet访问(服务端)这一步最关键,如果配置没问题就成功了一半。

1、启动Microsoft Visual SourceSafe Administrator2、创建VSS数据库一路Next,OK。

截图如下:3、启用Internet访问选择菜单Server --〉Configure…,弹出Server Configuration对话框这步我输入的不是ip地址我输入的是我的计算机名称∙给Enable SourceSafe Internet for this computer和Enable SourceSafe Internet for this database打上勾,输入服务器的IP地址。

VS2005远程调试攻略

VS2005远程调试攻略

VS2005远程调试攻略介绍远程调试的文章网络上其实有不少,我这里也会涉及到,但会更加的详细和细致,比如win7(32、64)系统下的调试,家庭版的调试,以及一些常见问题的原因和解决办法。

一般我们都会这么操作,比如在VIST A之前的系统如,2K, X P, 2003下(这里都是32位):(1) 远程端:安装VS2005光盘"\vs\Remote Debugger\x86\rdbgsetup.exe"。

或者直接运行或copy本地端的:"Program Files\Microsoft Visual Studio8\Common7\IDE\Remote Debugger\x86"(2) 远程端:“本地安全策略-安全选项-网络访问:本地帐户的共享和安全模式”改为:经典-本地用户以自己的身份验证。

(3) 远程端:启动Remote Debuger,从“工具-选项”中将身份验证模式改为“无身份验证,允许任何用户进行调试”。

或者直接用命令行:"\ msvsmon.exe" /noauth /anyuser /nosecuritywarn,可以建个快捷方式以方便运行。

(4) 将需要调试的程序debug版本和相应的pdb文件(包含调试信息)拷贝到远程主机,启动该debug版本程序。

(5) 本地:在VS2005中,“工具”--“附加到进程”,传输选“远程”,限定符输入远程端的主机名或IP地址,回车,选择我们需要调试的应用程序。

如果一切正常,那么我们现在可以像调试本机程序一样调试远程主机上运行的debug版本了。

细节和常见问题:(1)如果是64位系统,请选择x64,即\vs\Remote Debugger\x64\rdbgsetup.exe;(2)不要因为远程主机是64位的,就使用64位的remote debugger,它必须和你的应用程序匹配,即统一为32位,或64位。

vs2005使用教程

vs2005使用教程

VS2005使用教程简介Visual Studio 2005(简称VS2005)是由微软公司开发的集成开发环境(IDE),广泛用于Windows应用程序开发。

本教程将为您介绍如何使用VS2005进行开发工作,包括项目创建、调试、发布等方面的内容。

安装与配置在开始使用VS2005之前,首先需要进行安装与配置工作。

1.下载安装程序:您可以从微软官方网站上下载VS2005的安装程序。

确保下载的版本与您的操作系统兼容。

2.运行安装程序:双击下载的安装程序,按照提示完成安装过程。

3.安装更新:安装完成后,打开VS2005,选择“帮助”菜单下的“检查更新”选项,确保您安装了最新的补丁和更新程序。

4.配置环境:在VS2005编辑器中,选择“工具”菜单下的“选项”选项,您可以根据自己的需求设置编辑器的外观和行为。

项目创建与管理VS2005可以帮助您快速创建各种类型的项目,包括控制台应用程序、Windows桌面应用程序、Web应用程序等。

下面是一个项目创建的简要步骤:1.打开VS2005,选择“文件”菜单下的“新建”选项,然后选择您要创建的项目类型。

2.在弹出的对话框中,输入项目的名称和位置。

3.点击“确定”按钮,VS2005将为您创建一个新的项目,并打开相应的编辑器。

除了创建项目外,VS2005还提供了项目管理的工具,您可以在“解决方案资源管理器”中管理项目的文件和依赖关系。

代码编写与调试VS2005具有强大的代码编辑功能,支持多种编程语言,如C#、C++、VB等。

以下是一些代码编写和调试的常用技巧:1.代码编辑:在VS2005中,可以使用智能感知、代码自动完成等功能来加速代码编写。

您可以通过键入关键词的一部分,并按下“Tab”键来自动完成代码。

同时,VS2005还具有代码格式化、代码导航等功能,可帮助您提高编码效率。

2.代码调试:VS2005内置了强大的调试器,您可以使用断点、变量监视窗口等工具来调试程序。

在调试过程中,您可以逐行执行程序,查看变量的值等。

基于Microsoft Visual Studio 2005 C++环境下Winsock服务器客户端通讯网络编程

基于Microsoft Visual Studio 2005 C++环境下Winsock服务器客户端通讯网络编程

基于Microsoft Visual Stadio 2005 C++ 环境下采用Winsock 编程原理实现服务器——客户端通讯的简单程序运行整体效果服务器整体图片客户端整体图片服务器编写1.新建Windows窗体应用程序Server文件——新建——项目,进入新建项目,选CLR、Windows窗体应用程序,在下面名称一项输入Server,保存位置自己定,如下图1所示图1 单击确定后,进入Server界面,如下图2所示图2从图2可以清楚地看到新建Server包含的一些资源,中间是开发的界面,默认为Form1,右边是一些调协的属性!我们想要调试后得到什么样的界面效果,直接到Form1中进行设置即可,右边有个工具箱,自动隐藏,当然也可设置显示,如下图3所示图3可以看到上面有很多功能选项!现在我们开始对Form1进行开发,将顶上“Form1”改为“聊天——服务器”,即单击Form1界面,在右边属性的Text项中的“Form1”更改为“聊天——服务器”即可,如下图4所示图4设置IP和端口显示的窗口,选取TextBox选项,在界面上拉出一条窗口,如下图5所示图5单击刚拉出的窗口,在右边属性项Name中将默认的TextBox1更改为IPBox,如下图6所示图6再从工具箱中选取Label项,在IPBox左边拉出一小窗口,默认文字为Label1,点击它,在右边的属性中找到Text项,将默认的“Label1”更改为“本地服务器IP和端口:”,如下图7所示图7同样,选取TextBox,拉出一个显示窗口,如下图8所示,在属性中设置Name为ShowBox,ScrollBars选为Vertical(竖向输入),Multiline选为True可多项输入!图8再在ShowBox下用TextBox拉出一输入窗口,在属性项将Name设置为InputBox,如下图9所示图9在ShowBox与InputBox之间用Label拉出一窗口,在Text中将“Label”改为“请您输入想说的话:”,如下图10所示图10添加“发送”和“退出”按键,如下图11所示,选取Button项拉出两按键,分别在Name 项将Button1更改为“SendButton”和“QuitButton”,而在Text项中将Button1分别更改为“发送”和“退出”!图11以上基本设置完了界面,调试后会出现此界面,类QQ的形式!现在对代码进行编写,双击左边的Server.cpp文件,进入到里面,在using namespace Server;下加多一行代码,如下using namespace Server;using namespace System::Threading;选取Form1.h文件,右击选取“查看代码”进入下窗口,如下图12所示图12将里面的代码按下面的代码编写#pragma oncenamespace Server {using namespace System;using namespace System::ComponentModel;using namespace System::Collections;using namespace System::Windows::Forms;using namespace System::Data;using namespace System::Drawing;using namespace System::Threading;using namespace System::Text;using namespace System::Net;using namespace System::Net::Sockets;using namespace System::IO;/// <summary>/// Form1 摘要////// 警告: 如果更改此类的名称,则需要更改/// 与此类所依赖的所有.resx 文件关联的托管资源编译器工具的/// “资源文件名”属性。

visualstudio2005:Visual

visualstudio2005:Visual

visualstudio2005:Visual C# 2005中编写Socket网络程序疯狂代码 / ĵ:http://DotNet/Article48315.html 在网络环境下我们最感兴趣两个命名空间是.Net和命名空间通常和较高程操作有关例如download或upload试用HTTP和其他协议进行Web请求等等而.Net.Sockets命名空间所包含类通常和较低程操作有关如果要直接使用Sockets或者TCP/IP的类协议这个命名空间类是非常有用 在.Net中.Net.Sockets 命名空间为需要严密控制网络访问开发人员提供了 Windows Sockets (Winsock)接口托管实现.Net 命名空间中所有其他网络访问类都建立在该套接字Socket实现的上如TCPClient、TCPListener 和 UDPClient 类封装有关创建到 Internet TCP 和 UDP 连接详细信息;NetworkStream类则提供用于网络访问基础数据流等常见许多Internet服务都可以见到Socket踪影如Telnet、Http、Email、Echo等这些服务尽管通讯协议Protocol定义区别但是其基础传输都是采用Socket 其实Socket可以象流Stream样被视为个数据通道这个通道架设在应用端(客户端)和远程服务器端的间而后数据读取(接收)和写入(发送)均针对这个通道来进行 可见在应用端或者服务器端创建了Socket对象的后就可以使用Send/SentTo思路方法将数据发送到连接Socket,或者使用Receive/ReceiveFrom思路方法接收来自连接Socket数据 针对Socket编程.NET 框架 Socket 类是 Winsock32 API 提供套接字服务托管代码版本其中为实现网络编程提供了大量思路方法大多数情况下Socket 类思路方法只是将数据封送到它们本机 Win32 副本中并处理任何必要安全检查如果你熟悉Winsock API那么用Socket类编写网络会非常容易当然如果你不曾接触过也不会太困难跟随下面解说你会发觉使用Socket类开发windows 网络应用原来有规可寻它们在大多数情况下遵循大致相同步骤 在使用的前你需要首先创建Socket对象例子这可以通过Socket类构造思路方法来实现:public Socket(AddressFamily addressFamily,SocketType Type,ProtocolType protocolType); 其中addressFamily 参数指定 Socket 使用寻址方案Type 参数指定 Socket 类型protocolType 参数指定Socket 使用协议 下面举例语句创建个 Socket它可用于在基于 TCP/IP 网络(如 Internet)上通讯Socket temp = Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 若要使用 UDP 而不是 TCP需要更改协议类型如下面举例所示:Socket temp = Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 旦创建 Socket在客户端你将可以通过Connect思路方法连接到指定服务器并通过Send/SendTo思路方法向远程服务器发送数据而后可以通过Receive/ReceiveFrom从服务端接收数据;而在服务器端你需要使用Bind思路方法绑定所指定接口使Socket和个本地终结点相联并通过Listen思路方法侦听该接口上请求当侦听到用户端连接时Accept完成连接操作创建新Socket以处理传入连接请求使用完 Socket 后记住使用 Shutdown思路方法禁用 Socket并使用 Close 思路方法关闭 Socket 可以看出以上许多思路方法包含EndPo类型参数在Internet中TCP/IP 使用个网络地址和个服务端口号来唯标识设备网络地址标识网络上特定设备;端口号标识要连接到该设备上特定服务网络地址和服务端口组合称为终结点在 .NET 框架中正是由 EndPo 类表示这个终结点它提供表示网络资源或服务抽象用以标志网络地址等信息.Net同时也为每个受支持地址族定义了 EndPo 子代;对于 IP 地址族该类为 IPEndPoIPEndPo 类包含应用连接到主机上服务所需主机和端口信息通过组合服务主机IP地址和端口号IPEndPo 类形成到服务连接点 用到IPEndPo类时候就不可避免地涉及到计算机IP地址.Net命名空间中有两种类可以得到IP地址例子: IPAddress类:IPAddress 类包含计算机在 IP 网络上地址其Parse思路方法可将 IP 地址串转换为 IPAddress 例子下面语句创建个 IPAddress 例子:IPAddress myIP = IPAddress.Parse("192.168.0.1"); Dns 类:向使用 TCP/IP Internet 服务应用提供域名服务其Resolve 思路方法查询 DNS 服务器以将用户友好域名(如"")映射到数字形式 Internet 地址(如 192.168.0.1)Resolve思路方法 返回个IPHostEnty 例子该例子包含所请求名称地址和别名列表大多数情况下可以使用 AddressList 中返回第个地址下面代码获取个 IPAddress 例子该例子包含服务器 IP 地址IPHostEntry ipHostInfo = Dns.Resolve(" ");IPAddress ipAddress = ipHostInfo.AddressList[0]; 你也可以使用GetHostName思路方法得到IPHostEntry例子:IPHosntEntry hostInfo=Dns.GetHostByName(" ") 在使用以上思路方法时你将可能需要处理以下几种异常: SocketException异常:访问Socket时操作系统发生引发 ArgumentNullException异常:参数为空引用引发 ObjectDisposedException异常:Socket已经关闭引发 在掌握上面得知识后下面代码将该服务器主机( IP 地址和端口号组合以便为连接创建远程终结点:IPEndPo ipe = IPEndPo(ipAddress,11000); 确定了远程设备地址并选择了用于连接端口后应用可以尝试建立和远程设备连接下面举例使用现有IPEndPo 例子和远程设备连接并捕获可能引发异常:try{temp.Connect(ipe);//尝试连接}//处理参数为空引用异常catch(ArgumentNullException ae){Console.WriteLine("ArgumentNullException : {0}", ae.);}//处理操作系统异常catch(SocketException se){Console.WriteLine("SocketException : {0}", se.);} 需要知道是:Socket 类支持两种基本模式:同步和异步其区别在于:在同步模式中对执行网络操作(如 Send 和Receive)直等到操作完成后才将控制返回给在异步模式中这些立即返回 综合运用以上阐述使用Visual C#进行Socket网络开发知识下面是个简单Socket通讯例子client向server发送段测试串server接收并显示出来给予client成功相应//client端using ;using .Text;using .IO;using .Net;using .Net.Sockets;sample{ Class1 { void Main { try { port = 2000; host = "127.0.0.1"; IPAddress ip = IPAddress.Parse(host); IPEndPo ipe = IPEndPo(ip, port); Socket c = Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); c.Connect(ipe); sendStr = "hello!This is a test"; bs = Encoding.ASCII.GetBytes(sendStr); c.Send(bs, bs.Length, 0); recvStr = ""; recvBytes = [1024]; s; s = c.Receive(recvBytes, recvBytes.Length, 0); recvStr Encoding.ASCII.GetString(recvBytes, 0, s); Console.WriteLine(recvStr); c.Close; } catch (ArgumentNullException e) { Console.WriteLine("ArgumentNullException: {0}", e); } catch (SocketException e) { Console.WriteLine("SocketException: {0}", e); } Console.ReadLine; } }}//server端using ;using .Text;using .IO;using .Net;using .Net.Sockets;Project1{ Class2 { void Main { try { port = 2000; host = "127.0.0.1"; IPAddress ip = IPAddress.Parse(host); IPEndPo ipe = IPEndPo(ip, port); Socket s = Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Bind(ipe); s.Listen(0); Socket temp = s.Accept; recvStr = ""; recvBytes = [1024]; s; s = temp.Receive(recvBytes, recvBytes.Length, 0); recvStr Encoding.ASCII.GetString(recvBytes, 0, s); Console.WriteLine(recvStr); sendStr = "Ok!Sucess!"; bs = Encoding.ASCII.GetBytes(sendStr); temp.Send(bs, bs.Length, 0); temp.Shutdown(SocketShutdown.Both); temp.Close; s.Shutdown(SocketShutdown.Both); s.Close; } catch (ArgumentNullException e) { Console.WriteLine("ArgumentNullException: {0}", e); } catch (SocketException e) { Console.WriteLine("SocketException: {0}", e); } Console.ReadLine; } }} 以上在VS Express 2005 .Net2.0环境下测试通过2009-1-9 12:34:05疯狂代码 /。

第一章 Visual Studio 2005 基础知识

第一章 Visual Studio 2005 基础知识

第1章Visual Studio 2005 入门第1章工第1章工工工工在本章中,您会发现,对于初学网络编程的人来说,学习Visual Studio 2005(简称为VS2005)将是一个正确的选择,学习VS2005将是一件轻松快乐的事情。

1. 为什么要学VS2005学习就是为了应用,现在的应用主要有两种,一是本地应用程序,二是互联网应用程序。

互联网应用程序比本地应用程序有着极大的优势,而VS2005是诸多设计互联网应用程序工具软件中,开发效率最高,最容易入门和掌握的。

1.1本地/互联网程序(1)本地应用程序这类程序仅限于单个计算机使用或局域网使用。

在互联网还未普及的时代,人们主要使用这类程序来解决各种问题。

例如个人用的“进销存软件”、“名片管理软件”、“打字练习软件”、“杀毒软件”等,单位局域网用的“财务管理软件”、“成绩管理软件”、“学生食堂售饭软件”、“网吧计费软件”、“游戏软件”等。

(2)互联网应用程序这类程序以网页为基本形式,在一个普通网页上实现各种功能。

例如“聊天室”、“购物车”、“新闻发布”、“互联网搜索”、“邮箱”、“博客”等,这些程序以网页的形式出现。

程序编写完毕,发到某个互联网服务器上即可。

1.2互联网程序的优势互联网程序在以下几个方面有着本地程序无法比拟的优势:(1)无需安装任何一台电脑要使用本地程序,必须通过安装程序,将程序安装到一台个人电脑上。

程序修改后,必须重新安装。

而任何连接着互联网的电脑要使用互联网程序,只需打开浏览器,输入网址即可。

(2)对软件、硬件要求低对于本地程序,低档电脑可能无法运行、只能在某些Windows操作系统上运行。

而对于互联网程序,即使是一台破旧的486电脑,只要安装合适的软件,照样能够流畅访问网站。

(3)无地域限制对于本地程序,它只能在某台电脑中运行,或只能在某个局域网中运行、无法实现在任何地方、任何电脑中随意运行,这是因为数据是存放在某个固定的电脑中,无法随意转换。

VS2005纯资源DLL编写与使用【手把手系列】-名刀-秋水-CSDN博客

VS2005纯资源DLL编写与使用【手把手系列】-名刀-秋水-CSDN博客

VS2005纯资源DLL编写与使用【手把手系列】-名刀-秋水-CSDN博客问题1:纯资源DLL是什么?答:只包含资源(*.rc 、resource.h和主工程Resource Files下面的所有东东)的DLL。

主工程在启动时通过加载这个纯资源DLL来获得所有的资源。

而取代传统方式的资源在主题工程之内的形式,以达到减小主工程的体积(EXE文件大小),并实现模块化与语言国际化。

问题2:上个问题中的*.rc 、resource.h 和主工程Resource Files 下面的所有东东是从哪里来的?答:所有的一切,都来自与主工程,并且在主工程中移除这些文件(不是删除),将其加入到纯资源DLL工程。

提示:建议当主工程的所有代码及其功能已经固定,或基本完成(即将release)时,再开始制作相应的纯资源DLL。

补充说明:更深入的研究纯资源DLL,跟帖就好了,嘻嘻嘻嘻~找一些相关的资料吧,这里做基础的讲解。

开发环境:WINXP\VS2005\CH(中文)主体工程完成后,开始制作纯资源DLL:------------------------------------------------------------------------------------------(1)新建一个win32->DLL项目,选择默认选项创建即可。

(2)一个崭新的基础DLL框架就有了。

(3)将主体工程中的(a)"源文件"下的 *.rc 添加到DLL工程的"源文件"下(b)"头文件"下的 resource.h 添加到DLL工程的"头文件"下(c)"资源文件"下的所有东东添加到DLL工程的"资源文件"下(4)在主体工程中移除上述的文件。

(最好不要删除,以备不时之需!)(5)编译一下DLL工程,理论上是不会出错的,只要你的主体工程没有问题。

VS2005使用教程之窗口通讯的聊天应用编程实现

VS2005使用教程之窗口通讯的聊天应用编程实现

VS2005使用教程之窗口通讯的聊天应用编程实现
本文以Visual C++2015 软件为例编写一个类似QQ 聊天工具的程序。

以基础的windows 编程开发知识、windows 图形窗口编程、基于TCP/IP 协议的网络编程原理与实现方法,多线程编程的运用,再结合前面的实例为你详解一个win 窗口应用程序应该如何编写的,需要注意事项有哪些?
类QQ 聊天工具程序开发,原文引用如下:
下面介绍一个综合的例子:聊天程序。

这是一个类似于QQ 的聊天程序,为了简化起见,把服务器端程序和客户端程序合二为一了。

这个程序既是服务器程序,同时又是客户端程序。

首先先建立一个项目,点击菜单新建项目,如下图所示:
将项目的类型设置为Windows 窗体应用程序,项目的名称设置为ChatDemo,如下图所示:
项目建好后,首先在窗体中添加一个TextBox 控件。

在工具箱中点中TextBox 控件,如下图所示:
在窗体中拖拉出一个TextBox,以后所有的聊天内容就显示在这个窗口里面。

把它的名字设置为ShowBox,并且把它的Multiline 属性设置为True,同时把它的Scrollbar 属性设置为Vertical(垂直滚行条),如下图所示:
将窗体的标题设置为聊天,在ShowBox 的下面添加一个名为InputBox 的TextBox,用户可以在这个输入框里面输入想说的话。

另外再添加一个发送按钮,用于发送想说的话,把这个按钮命名为SendTextButton,如下图所示:
将显示聊天内容的控件的TabIndex 属性设置为2,这样程序运行时输入的焦点就会定位于下面的输入框里面,如下图所示:
程序的界面就完成了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TCP协议是TCP/IP协议簇中的传输层中的一个协议,也是TCP/IP协议簇最为重要的协议之一。

在TCP/IP协议簇中,有一个协议和TCP协议非常类似,这就是UDP协议,网络上进行基于UDP协议的数据传送时,发送方只需知道接收方的IP地址(或主机名)和端口号就可以发送UDP数据包。

而接收方只需知道发送方发送数据对应的端口号,就能够接收UDP 数据包了。

传送数据的双方并不需要进行连接就能够实现数据通讯,这样就导致基于UDP 协议的网络应用程序,在传送数据时无法保证可靠性、完整性和安全性。

而TCP协议却与之相反,TCP协议是一种面向连接的,并提供可靠的、完整的、安全的数据传送的网络协议。

它提供可靠字节服务的协议。

在网络中通过TCP协议传送数据之前,发送方和接收方之间必须建立连接,这种连接就是所谓的"握手"。

网络中TCP应用,如同日常生活中的打电话,在通话之前,首先要拨号、震铃(犹如发送方向接收方提出TCP 连接申请,并等待TCP连接申请通过)。

直到对方拿起电话时(发送方和接收方的TCP连接已经建立),就可以通话了(传送数据)。

本文的主要内容就来介绍在Visual Basic .Net实现基于TCP协议网络数据传送的一种简单的方法。

一.简介本文在实现TCP协议网络应用时使用的类库:.Net FrameWork SDK中提供了很多用以实现TCP协议或与之相关协议的类库,本文就选择五个比较典型,也是比较简单的类加以介绍,即:TcpListener类、TcpClient类、NetworkStream类、StreamReader类和StreamWriter类。

TcpClient主要用以提出TCP连接申请。

TcpListener主要用以侦听端口号,并接收远程主机的TCP连接申请。

NetworkStream类是实现TCP数据传输的基础数据流,StreamReader类作用是通过操作NetworkStream,实现从网络接收数据。

StreamWriter类作用是通过操作NetworkStream,实现向网络传输数据。

1. NetworkStream类:NetworkStream类主要是提供用于网络访问的基础数据流。

它主要是网络数据传输的载体,并提供同步、异步方式来访问网络数据流。

虽然NetworkStream类有构造函数,但在实际情况中更多是通过TcpClient实例的GetStream方法来初始化NetworkStream实例。

以下就是使用TcpClient实例的GetStream方法来初始化NetworkStream实例具体代码:Dim tcpClient As TcpClientDim nsStream As NetworkStreamtcpClient = New TcpClient( "" , 8000)''''对远程主机的8000端口提出TCP连接申请nsStream = tcpClient.GetStream ( )''''TCP连接建立后,获得网络数据传输的基础数据流在下面介绍的程序示例中,就是利用NetworkStream作为传送和接收数据的载体。

而操作这个载体的就是StreamWriter类和StreamReader类。

表01和表02是NetworkStream类中一些常用的方法、属性及其说明。

方法说明BeginRead 开始异步读者基础数据流。

BeginWrite 开始异步写入基础数据流。

Close 关闭流并可选择关闭基础套接字。

EndRead 结束异步读取。

EndWrite 结束异步写入。

Flush 刷新流中的数据。

Read 从流中读取数据。

Seek 将流的当前位置设置为给定值。

SetLength 设置流的长度。

Write 将数据写入流。

表01:NetworkStream类中常用的方法及其说明其中"BeginRead"、"EndRead"和"BeginWrite"、"EndWrite"是二对异步方法,起作用分别相当于"Read"和"Write"方法。

属性说明CanRead 获取当前流是否支持读取。

CanSeek 获取流是否支持查找。

该属性总是返回false。

CanWrite 获取当前流是否支持写入。

DataAvailable 获取是否可以在流上读取数据。

Length 流上可用数据的长度。

Position 获取或设置流中的当前位置。

表02:NetworkStream类中属性及其说明2. StreamReader类:StreamReader类能够实现对基础数据流的读操作,从而实现对经过基础数据流传送来的数据。

表03是StreamReader类的常用的方法及其说明:方法说明Close 关闭StreamReader并释放与阅读器关联的所有系统资源。

DiscardBufferedData 允许StreamReader丢弃其当前数据。

Peek 返回下一个可用的字符,但不使用它。

Read 读取输入流中的下一个字符或下一组字符。

ReadBlock 从当前流中读取最大数量的字符并从索引开始将该数据写入缓冲区。

ReadLine 从当前流中读取一行字符并将数据作为字符串返回。

ReadToEnd 从流的当前位置到末尾读取流。

表03:NetworkStream类中常用的方法及其说明3. StreamWriter类:StreamWriter类能够实现对基础数据流的写操作,从而实现提供基础数据流来传送数据。

表04是StreamWriter类的常用方法及其说明:方法说明Close 关闭当前的StreamWriter和基础流。

Flush 清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。

Write 写入基础数据流。

WriteLine 写入重载参数指定的某些数据,后跟行结束符。

表04:StreamWriter类的常用方法及其说明4.TcpClient 类:TcpClient 类主要为TCP网络服务提供客户端连接。

TcpClient是类基于Socket类构建,它以更高的抽象程度提供TCP服务。

TcpClient 提供了通过网络连接、发送和接收数据的简单方法。

表05和表06分别是TcpClient类常用方法、属性及其说明。

方法说明Close 关闭TCP 连接Connect 使用指定的主机名和端口号将客户端连接到TCP主机GetStream 返回用于发送和接收数据的流表05:TcpClient类常用的方法属性描述LingerState 有关套接字逗留时间的信息NoDelay 一个值,该值在发送或接收缓冲区未满时启用延迟ReceiveBufferSize 接收缓冲区的大小ReceiveTimeout TcpClient在启动后为接收数据而等待的时间长度SendBufferSize 发送缓冲区的大小SendTimeout 在您启动发送操作后TcpClient将为接收确认而等待的时间长度表06:TcpClient类常用的属性5.TcpListener 类:TcpListener类的主要作用是从TCP网络客户端侦听连接,TcpListener类基于Socket 类提供更高理念级别的TCP服务。

可以使用TcpListener从TCP客户端侦听连接。

像FTP 和HTTP 这样的应用层协议是在TcpListener 类的基础上建立的。

表7和表8分别是TcpListener类常用方法、属性及其说明:方法说明AcceptSocket 接受挂起的连接请求AcceptTcpClient 接受挂起的连接请求Pending 确定是否有挂起的连接请求Start 开始侦听网络请求Stop 关闭侦听器表7:TcpListener 类常用的方法属性说明LocalEndpoint 获取当前TcpListener的基础EndPoint Active 获取一个值,该值指示TcpListener 是否正主动侦听客户端连接Server 获取基础网络Socket表8:TcpListener 类常用的属性二.Visual Basic .Net实现基于TCP协议数据传送程序的体系结构:在下面介绍的用Visual Basic .Net实现基于TCP协议的数据传送程序是由二个子程序组成的。

也可以看成是服务器端程序和客户端程序,其中:服务器端程序的功能是侦听端口号,接收远程主要的TCP连接申请,并接收远程主机传送来的文字数据。

另外一个子程序,也就是所谓的客户端程序,主要实现向网络的远程主机提出TCP连接申请,并在连接申请通过后,向远程主机传送文字数据。

下面来详细介绍Visual Basic .Net实现TCP协议网络数据传送的服务器端程序和客户端程序的具体步骤。

三.服务器端程序的具体实现步骤:服务器端程序的实现关键在于侦听端口号,接收远程主机的TCP连接申请,获得网络数据传输的基础数据流,并通过基础数据流接收数据。

接收数据使用的是StreamReader中ReadLine方法,由于ReadLine方法是一个阻塞式的方法,所以在下面具体的实现步骤中,是接收数据是在创建的线程中完成的,具体可参阅下面实现步骤中的第十一和十二步。

以下是Visual Basic .Net实现TCP协议客户端程序实现的具体步骤:1. 启动Visual Studio .Net。

2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。

3. 将【项目类型】设置为【Visual Basic项目】。

4. 将【模板】设置为【Windows应用程序】。

5. 在【名称】文本框中输入【服务器端程序】。

6. 在【位置】的文本框中输入【E:\项目】,然后单击【确定】按钮,这样在"E:\项目"目录中就产生了名称为"服务器端程序"的文件夹,并在里面创建了名称为"服务器端程序"的项目文件。

7. 把Visual Studio .Net的当前窗口切换到【Form1.vb(设计)】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中往Form1窗体中拖入下列组件,并执行相应的操作:一个Label组件。

一个StatusBar组件。

一个ListBox组件。

一个Button组件,并在这个Button组件拖入Form1的设计窗体后,双击它,则系统会在Form1.vb文件分别产生这个组件的Click事件对应的处理代码。

8. 按照表05所示调整窗体中各组件属性的数值:组件类型组件名称属性设置结果Form Form1 Text 服务器端程序Form1 MaximizeBox False Form1 FormBorderStyle FixedSingle Button Button1 Text 启动服务Button1 FlatStyle Flat Label Label1 Text 服务尚未启动StatusBar StatusBar1 Text 无连接!表05:【服务器端程序】项目中组件设定数值表9. 把Visual Studio .Net的当前窗口切换到Form1.vb的代码编辑窗口,并在Form1.vb文件的最前面添加下列代码,下列代码在Form1.vb中导入程序中要使用的类所在的命名空间:Imports .Sockets''''使用到TcpListen类Imports System.Threading''''使用到线程Imports System.IO''''使用到StreamReader类10. 在Form1.vb中创建各种可视组件的代码中添加下列代码,下列代码的作用是创建全局使用的实例和变量:Private iPort As Integer = 8000''''定义侦听端口号Private thThreadRead As Thread''''创建线程,用以侦听端口号,接收信息Private tlTcpListen As TcpListener''''侦听端口号Private blistener As Boolean = True''''设定标示位,判断侦听状态Private nsStream As NetworkStream''''创建接收的基本数据流Private srRead As StreamReader''''从网络基础数据流中读取数据Private tcClient As TcpClient11. 在Form1.vb中的InitializeComponent过程之后添加下列代码,下列代码的作用是定义Listen过程,此过程的作用是侦听本地机的8000端口号,接受网络主机的TCP连接申请,并接收从建立申请的远程主机发送来的文本数据:Private Sub Listen ( )TrytlTcpListen = New TcpListener ( iPort )''''以8000端口号来初始化TcpListener实例tlTcpListen.Start ( )''''开始监听StatusBar1.Text = "正在监听..."tcClient = tlTcpListen.AcceptTcpClient ( )''''通过TCP连接请求nsStream = tcClient.GetStream ( )''''获取用以发送、接收数据的网络基础数据流srRead = New StreamReader ( nsStream )''''以得到的网络基础数据流来初始化StreamReader实例StatusBar1.Text = "已经建立TCP连接!"''''循环侦听While blistenerDim sMessage As String = srRead.ReadLine ( )''''从网络基础数据流中读取一行数据If ( sMessage = "STOP" ) ThentlTcpListen.Stop ( )''''关闭侦听nsStream.Close ( )srRead.Close ( )''''释放资源StatusBar1.Text = "无连接!"thThreadRead.Abort ( )''''中止线程ReturnElse''''判断是否为断开TCP连接控制码Dim sTime As String = DateTime.Now.ToShortTimeString ( )''''获取接收数据时的时间ListBox1.Items.Add ( sTime + " " + sMessage )End IfEnd WhileCatch ex As System.Security.SecurityExceptionMessageBox.Show ( "侦听失败!" , "错误" )End TryEnd Sub12. 用下列代码替换Form1.vb中的Button1的Click事件对应的处理代码,下列代码功能是用上面定义的Listen过程来初始化并启动线程,接收建立TCP连接的远程主机发送来的文本数据:Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.ClickthThreadRead = New Thread ( New ThreadStart ( AddressOf Listen ) )''''以Listen过程来初始化线程实例thThreadRead.Start ( )''''启动线程Button1.Enabled = FalseLabel1.Text = "服务已经启动!"Label1.ForeColor = Color.RedEnd Sub13. 用下列代码替换Form1.vb中的Dispose过程,下面代码的作用是重新定义Dispose 过程,在Dispose过程手动清除使用的资源,回收垃圾:Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )TrythThreadRead.Abort ( ) ''''中止线程tlTcpListen.Stop ( ) ''''关闭侦听tcClient.Close ( )nsStream.Close ( )srRead.Close ( ) ''''释放资源CatchEnd TryIf disposing ThenIf Not ( components Is Nothing ) Thencomponents.Dispose ( )End IfEnd IfMyBase.Dispose ( disposing )End Sub14. 至此在上述步骤都正确执行后,【服务器端程序】项目的全部工作就完成了。

相关文档
最新文档