下载  >  开发技术  >  C#  > c#网络编程

c#网络编程 评分

C#网络应用高级编程,本书是《C#网络应用编程基础》的姊妹篇。该书在《C#网络应用编程基础》介绍的基础知识之上,进一步讲解了利用C#进行各种高级应用编程的方法和技巧。全书语言简洁,重点突出,思路清晰,实用性强。教材紧跟C#和Microsoft Visual Studio开发工具最新版本的变化而及时更新。同时有与本书配套的实验指导、电子教案、所有例题与习题的源程序和全部习题参考解答。本书共分8章。其中第1~5章介绍了C#多线程处理、TCP、UDP、SMTP和POP3协议的高级应用以及P2P应用编程,第6章介绍了网络数据加密与解密的方法,第7章介绍了三维设计与多媒体编程方法,第8章为与本书配套的上
美汪浇信公众号,获取更多学习剑料! 将此天放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! 目录 前言 第章进程、线程与网络协议 进程和线程 类 类 在个线程中操作另个线程的控件 地止与端口 网终协议 类与类 类 类 套接字 类 面向连接的套接字 无连接的套接字 网络流 习题 第章应用编程 同步应用编程 使用套接字发送和接收数据 使用 对象发送和接收数据 类 解决协议的无消息边界问题 利用同步编写网络游戏 服务器端编程 客户端编程 异步应用编程 类 委托 方法和 方法 方法和 方法 发送数据 接收数据 异步聊天程序 服务器端设计 客户端设计 美汪浇信公众号,获取更多学习剑料! 将此放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! ↓题 第章 应用编程 协议基础知识 应用编程技术 类 发送和接收数据的方法 利用协议进行广播和组播 通过 实现群发功能 在 上举行网终会议讨论 习题 第章 应用编程 基础知识 应用举例 习题 第章 应用编程 通过应用程序发送电了邮件 办议 发送邮件 利用同步接收电子邮件 工作原理 邮件接收处理 题 第章网终数据加密与解密 对称加密 不对称加密 通过网络传递加密数据 算法与数字签名 习题 第章三维设计与多媒体编程 简单的设计入门 基础知识 左手坐标系与右手坐标系 设备 顶点与顶点缓冲 对象 法线 纹理与纹理映射 世界矩阵、投影矩阵与视图矩阵 背面剔除 美汪浇信公众号,获取更多学习剑料! 将此放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! 灯光与材质 音频与视频 直接使用 类播放音频文件 题 第章上机实验指导 实验一简单网络聊天系统 实验二网终呼叫应答提醒系统 实验三文件数据加密与解密 美汪浇信公众号,获取更多学习剑料! 将此放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! 前言 在 和计算杋技术高速发展的时代,处处都有网络的影子。在网络无处不在的坏境 下,仟何一种开发和编程都不可避免的涉及到网络应用。网终办公、网络游戏、网络电视、电 子商务、网络资源搜索、邮件处理、千姿百彩的网站、杂忐订阅、远程控制……,以及其它各 种网络相关的应用软件,都是网络应用编程的实际应用。早期的网络编程难度大、效率低,使 初学者望而生畏,而(读作 )和 (读作 )平台大大地简化了这些技术 使过去困难的网络应用编程变得非常轻松 目前,很多高校计算杋及相关专业都开设了网络应用编程方面的课稈。在就ψ压丿日益增 大以及学生对所学知识与社会实际需求紧密结合的迫切要求的情况下,本书涉及的内容和知识 面显得尤为重要。 (简称 )是微软公司最新推出的先进的可视化开发T 具 年底,微软隆重发布了 英文版,并于年发布了 简体中文版。 本书以 简体中文版为开发环境,以易学易用为重点,充分考虑了学以致用 和社会实际需求,用大量的实例,引导读者快速掌握用进行各类网络应用程序的编程方法 和技巧。使学生学习木书内容后能立即编写出与企事业实际应用紧密结合的程序,避免说起来 似懂非懂,做起来寸步难行的尴尬局面。 是在 和基础上开发的在平台上运行的为适应 和各 类网络应用而设计的编程语言,该语言综合了 和以及其他高级语言的优点,是 种语法优雅、类型安全、完全面向对象的编程语言。由于是专门为平台而设计的开发 语言,并」年由 欧洲计算机制造 商协会)规定为高级语言开发标准( 年被 ,国际标准化组织)规定为国际标准( ),因此它比任何在平 台下提供的其他开发语言都有无可比拟的优越性。毫无疑问,随着技术的普及,必将 成为开发 和企业级应用程序的首选程序设计语言。 本书的所有程序均在 简体中文版开发环境下调试通过。是本非常实 用的学习网络高级应用编程的教材。读者通过阅读、上机练习和调试运行,能快速珥解用 进行各类高级应用编程的方法和技巧。另外,由于本书的内容是在《网络应用编程基础》 (马骏主编,人民邮电出版社)介绍的基础知识之上进一步介绍更为复杂的高级应用编程方法 和技巧,因此需要读者有一定的语言编程基础 本书由马骏编著。参与编写和代码调试等L作的还有陈明、土芳、杨韶华、张端青、郑珂 等。人民邮电出版社的邹文波编辑对本书编写给予了大力支持、指导和帮助,在此表示深深的 谢意。 由于编者水半有限,书中难免存在错误之处,敬请读者批评指正 编者 年 美汪浇信公众号,获取更多学习剑料! 将此页放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! 第章进程、线程与网络协议 在 应用程序中,基于客户端和服务器的各种网络编程技术应用非常广泛,本书 将逐步介绍这类应用程序的编程方法。 在《网络应用编程基础》(马骏主编,人民邮电出版社)一书中,我们已经学习了 血向对象编程的基础知识以及基本控件的用法。本书假定读者对相关基本内容比较熟悉,并在 此基础上,进一步学习更为复杂的基于 窗体的高级应用开发,而不再介绍语法以 及控件的用法等基础内容。如果读者对相关知识不太熟悉,请首先阅读《网络应用编程 基础》一书。 本章主要介绍进程、线程、地址与端口、套接字以及网络流等基本知识,这部分内容 是学习木书后面章节的基础,希望读者能很好的理解和掌握。 1进程和线 进程是对一段静态指令序列(程序)的动态执行过程,是系统进行資源分配和调度的一个 基本单位。与进程相关的信息包括进程的用户标志、正在执行的己经编译好的程序、进程程序 和数据在存储器中的位置等等。同一个进程又可以划分为若干个独立的执行流,我们称之为线 程。线程是调度和分配的基本单位。在 环境下,用户可以同时运行多个应用程 序,每个执行的应用程序就是一个进程。例如一台电脑上同冋时打开两个时,每个运行的 就是一个进程;而用一个和多个人聊天时,每个聊天窗口就是一个线程。 进程和线程概念的提岀,对提高软件的并行性有着重要的意义。并行性的主要特点就是并 发处瑆。在一个单处理器系统中,可以通过分时处理来获得并发,这种情况下,系统为每个线 程分配一个时间片,每个线程只有在分配的时间片内才拥有对的控制权,其他时间 都在等待。即同一时间只有一个线程在运行。由于系统为每个线程划分的时间片很小(毫 秒左右),所以在用户看来,好像是多个线程在同时运行。 为什么要使用多线程呢?考扆这样‘种情況:在模式下,服务器需要不断监听来自 各个客户端的请求,这时,如果采用单线程机制的话,服务器将无法处理其他事情,因为这个 线程要不断的循环监听请求而无暇对其他请求做出响应。实际上,当要花费大量时间进行连续 的操作时,或者等待网络或其他设备响应时,都可以使用多线程技术 在中,有两个专门用于处理进程和线程的类: 类和 类 类 类位于 命名空间下,用于完成进程的相关处理任务。可以在本 地计算上启动和停止进程,也可以查询进程的相关信息。在自凵的程序中运行其他的应用程 序,实际上就是对进程进行管理。如果希望在自己的进程中启动和停止其他进程,首先要创建 类的实例,并设置对象的 属性,然后调用该对象的方法启动进程。 【例】启动、停止和观察进程 新建一个名为 的 应用程序,设计界面如图所示 美汪浇信公众号,获取更多学习剑料! 将此页放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! 展廾工具箱中的【组件】选项卡,然后将r 组件拖放到设计窗体上 在代码的开始部分添加命名空间引用: 分别在【启动记事本】【停止记事本】和【观 察所有进程】三个按钮的事件中添加代码 停止订事本 烈烹所有江程 图测试进程界面 启动 进程 创建新的 组件的数组并将它们与指定的进程名称( )的所有进程资源相关联 设置终止当前线程前等待毫秒 listBox. Items. Clear o /刨建 ocess类型的数组,并将它们与系统内所有过程相关联 P rocess processes processes- Process. GetProcesses O foreach(Process p in processes) 指显示空闲率的进程名称 由于访问的 会出现异常,所以将其排除在外 if(p Process Name ="Idle //将每个进程名和进程开始时间加入1 lisTbox1中 this. listBoxl Items Add( string. Format("[ 0, -30[1: h: m:s", p. ProcessName, p StartTime)) 按键编译并执行,单击几次【启动记事本】按钮,观察打开的每个进程,然后单 击【停止记事本】,观察依次停止进程的情况 山于安装 操作系统后 就已纾安装到系统文件夹下,而且在仟何 个文件夹中均可以直接运行,所以在这个例了中,我们选择了调用 作为演示的例 美汪浇信公众号,获取更多学习剑料! 将此放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! 子。实际上,任何一个可执行文件均可以通过这种方法调用,读者可以自行尝试调用其他可执 行文件,并观察执行效果 类 在 命名空间下,包含了用于创建和控制线程的 类。对线程的常 用操作有:启动线程、终止线程、合并线程和让线程休眠等 1.启动线程 在使用线程前,首先要创建一个线程。其一般形式为 其中 为线程的入口,即线程开始执行的方法。在托管代码中,通过委托处理线 程执行的代码。例如: 创建线程实例后,就可以调用方法启动线程了。 2.终止线程 线程启动后,当不需要某个线程继续执行的时候,有两种终止线程的方法。 种是事先设置一个布尔变量,在其他线稈中通过侈改该变量的值作为传递给该线稈是否 需要终止的判断条件,而在该线程中循环判断该条件,以确定是否退出线程,这是结束线程的 比较好的方法,实际编程中一般使用这种方法。 第二种方法是通过调用 类的方法强行终止线程。例如: 方法没有任何参数,线程一旦被终止,就无法再重新启动。由于通过抛出异 常强行终止结束线程,因此在实际编程中,应该尽量避免采用这种方法 调用方法终止线程吋,公共语言运行库()会引发 异常, 程序员可以在线程中捕获 异常,然后在异常处理的块或者 块中作释放资源等代码处理工作;但是,线程中也可以不捕获 异常,而 由系统自动进行释放资源等处工作 注意,如果线程中捕获了 异常,系统在 子句的结尾处会再次 引发 异常,如果没有句,则会在句的结尾处再次引发 该异常。为了避免再次引发异常,可以在 子句的结尾处或者 子句的结尾处调用 方法防止系统再次引发该异常 使用方法终止线程,调用方法后,线程不一定会立即结束。这是因为系统在 结束线稈前要进行代码清理等工作,这种机制可以使线稈的终止比较安全,但淸理代码需要 定的时间,而我们并不知道这个上作将需要多长时间。因此,调用了线程的方法后,如 果系统自动清理代码的工作没有结朿,可能会出现类似死机一样的假象。为了解决这个问题, 可以在主线程中调用子线程对象的方法,并在方法中指定主线程等待子线程结束的 等待时间 3.合并线程 方法用于把两个并行执行的线程合并为一个单个的线程。如果一个线程在执行的 过程中需要等待另一个线程结東后才能继续执行,可以在的程序模块中调用的 方法。例如 美汪浇信公众号,获取更多学习剑料! 将此页放大查看,左边扫码,或搜 A一PLC工程师”,能提向HC技术! 这样在执行到 语句后就会处于阻塞状态,直到结束后才会继续执行 但是假如一直不结束,那么等待就没有意义了。为了解决这个问题,可以在调用的 方法的时候指定一个等待时间,这样这个线程就不会一直等待下去了。例如,如果希 望将合并到后,只等待毫秒,然后不论是否结束,都继续执行,就可以在 中加上语句: 方法通常和起使用。 由于调用某个线程的 方法后,我们无法确定系统清理代码的工作什么时候才能结 束,因此如果希望上线程调用了子线程的方法后,主线程不必一直等待,可以调用子线 程的方法将了线程连接到主线程中,并在连接方法中指定·个最大等待时间,这样就能 使主线程继续执行了 4.让线程休眠 在多线程应用程序中,有时候并不希望某一个线程继续执行,而是希望该线程暂停一段时 间,等待其他线程执行之后再继续执行。这时可以调用 类的 方法,即让线程休 眠。例如: 这条语句的功能是让当前线程休眠毫秒。 注意,调用方法的是类本身,而不是类的实例。休眠的是该语句所在的线程,而不 是其他线程 5.线程优先级 当线程之间争夺时间片时,是按照线程的优先级进行服务的。在应用程序 中,可以对线程设定五个不同的优先级,由高到低分别是 和 在创建线程时如果不指定其优先级,则系统默认为 假如想 让一些重要的线程优先执行,可以使用下面的方法为其赋予较高的优先级: 通过设置线程的优先级可以改变线程的执行顺序,所设置的优先级仪仪适用于这些线程所 属的进程。 注意,当把某线程的优先级设置为 时,系统上正在运行的其他线程都会终止,所 以使用这个优先纵别时要特别小心 6.线程池 线程池是一种多线程处理形式,为了提高系统性能,在许多地方都要用到线程池技术。例 如,在一个模式的应用程序中的服务器端,如果每到一个凊求就创建一个新线程,然后 在新线程中为其请求服务的话,将不可避免的造成系统开销的增大。实际上,创建太多的线程 叫能会导致由于过度使用系统资源而耗尽内存。为了防止资源不足,服务器端应用程序应采取 一定的办法来限制同一时刻处理的线程数目。 线程池为线程生命周期的开销问题和资源不足问题提供了很好的解决方案。通过对多个任 务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,由于请求到达时线程已经存 在,所以无意中也就消除了线程创建所带来的延迟。这样,就可以立即为新线程请求服务,使

...展开详情
所需积分/C币:10 上传时间:2018-04-23 资源大小:18.66MB
举报 举报 收藏 收藏 (3)
分享 分享