




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(论文)任务书 信息工程信息工程 学 院 计算机科学与技术计算机科学与技术 专 业 计算机计算机 2010-2 班 一、课程设计(论文)题目 计算机网络课程设计计算机网络课程设计 二、课程设计(论文)工作自 20122012 年 6 6 月 1818 日起至 20122012 年 6 6 月 2222 日 止。 三、课程设计(论文) 地点: 创新大楼创新大楼 405405 有线网络实验室。有线网络实验室。 四、课程设计(论文)内容要求: 1本课程设计的目的本课程设计的目的 通过课程设计,使学生理论联系实际,在实践中进一步了解计算机网络体系结构,深 入理解 tcp/ip 参考模型,掌握各种网络工程技术和网络规划与设计,初步掌握综合布线技术、 高速 局域网技术、广域网接入技术、网络互联技术,初步掌握网络应用程序开发技术以及 互联网 的应用技术。培养学生分析、解决问题的能力,提高学生的科技论文写作能力。 2课程设计的任务及要求课程设计的任务及要求 1)基本要求:)基本要求: (1)熟悉交换机、路由器等网络设备的功能和使用; (2)掌握网络规划与设计,掌握网络安全与管理技术; (3)初步掌握网络应用程序设计技术和互联网应用技术。 2)课程设计论文编写要求)课程设计论文编写要求 (1)理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式 进行 书写和装订。 (2)课程设计报告(论文)包括目录、绪论、正文、设计小结、参考文献、附录等 3)课程设计评分标准:)课程设计评分标准: (1)考勤与学习态度:20 分 (2)理论理解与课程设计报告论文:40 分; (3)动手操作与实验设计:20 分; (4)设计论文答辩:20 分。 4)参考文献:)参考文献: 1 谢希仁, 计算机网络m.北京:电子工业出版社,2008 2郑小平, visual c#.net 开发实践m.北京:人民邮电出版社,2001 3谭献海, 网络编程技术及应用m.北京:清华大学出版社,2006 5)课程设计进度安排)课程设计进度安排 内容 天数 地点 1选择设计题目、了解设计目的要求、查阅相关理论资料 1 天 图书馆、机房 2设计方案选型及实验室完成相关的设计任务 2 天 实验室 3总结课程设计任务和设计步骤,撰写课程设计论文 2 天 图书馆、机房、实 验室 学生签名: 2012 年 6 月 18 日 6)选择课程设计题目具体要求:)选择课程设计题目具体要求: 基于基于 tcp 的点到点聊天程序设计的点到点聊天程序设计 具体要求: 理解基于tcp的网络编程技术,分析点到点聊天程序设计原理和程序流程,选择合 适的开发环境,设计实现点到点聊天功能的应用程序。 设计论文内容要求: 1) 分析winsock编程技术; 2) 分析点到点聊天程序的功能及其相关网络协议; 3) 给出点到点聊天程序流程图和设计方案; 4) 选择开发环境,编译源程序; 5) 给出软件测试文档; 6) 设计小结; 7)参考文献(包括互联网上的引用信息)。 课程设计课程设计( (论文论文) )评审意见评审意见 (1)考勤与学习态度(20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (2)理论理解与课程设计报告论文(40 分):优( ) 、良( ) 、中( ) 、一般( ) 、 差( ) ; (3)动手操作与实验设计 (20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差 ( ) ; (4)设计论文答辩 (20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (5)格式规范性及考勤是否降等级:是( ) 、否( ) 评阅人: 职称: 讲 师 2012 年 6 月 24 日 目录目录 第一章 绪论1 1.1 聊天工具发展现状和趋势.1 1.2 课程设计的目的和意义.1 1.3 课程设计的任务及要求 .2 第二章 开发工具及相关技术3 2.1 c#概述.3 2.2 tcp/ ip 概述3 2.3 c/s 模式5 2.4 winsock编程技术.6 第三章 基于 tcp 的 c/s 聊天程序的详细设计方案.8 3.1 tcp 设计思路8 3.2 客户端 2 编程步骤.9 3.3 客户端 1(带服务器性质)编程步骤11 第四章 聊天程序的功能分析13 4.1 程序的使用流程.13 4.2 程序的相关介绍.17 4.2 结果分析17 第五章 实验心得体会18 参考文献19 附录 1 tcp 客户端 1(带服务器性质)源程序 19 附录 2 tcp 客户端 2 源程序 22 - 1 - 第一章第一章 绪论绪论 1.1 聊天工具发展现状和趋势聊天工具发展现状和趋势 自进入信息化社会以来,人们的生活发生了翻天覆地的变化,所有这一切 的实现都要归功于计算机网络。自从计算机网络出现以来,网络发展越来越迅 速,其重要性更是不可估量。现在,网络已经进入到我们生活的各个角落,大 到网上理财、网上会议、网上战争,小到上网购物、查找资料,网上聊天等, 可以说网络把我们的世界变“小”了,即使在天涯海角,我们也可以随时联系。 一个最简单且应用最广泛的例子网上聊天,就是最好的证明。本课程设计 将基于 tcp 和 udp 协议,使用 c#语言分别实现一个 c/s 聊天程序。随着社会 的不断发展进步,电脑不断的普及,网络聊天工具越来越受到大家的欢迎,特 别是像 qq 这样的操作简单,工能全面的聊天软件更是流行,已经成为很多人必 不可少的聊天工具。 本程序是模拟 qq 基于 tcp 协议的聊天工具,并且应用 winsock 编程技术, 根据 qq 聊天的相关协议来实现的。通过该程序的制作,我很好的学习了网络软 件编程知识。 1.2 课程设计的目的和意义课程设计的目的和意义 通过课程设计,使学生理论联系实际,在实践中进一步了解计算机网络体 系结构,深入理解,tcp/ip 参考模型,掌握各种网络工程技术和网络规划与设 计,初步掌握综合布线技术、高速局域网技术、广域网接入技术、网络互联技 术,初步掌握网络应用程序开发技术以及互联网的应用技术。培养学生分析、 解决问题的能力,提高学生的科技论文写作能力。 - 2 - 1.3 课程设计的任务及要求课程设计的任务及要求 1)基本要求:)基本要求: (1)熟悉交换机、路由器等网络设备的功能和使用; (2)掌握网络规划与设计,掌握网络安全与管理技术; (3)初步掌握网络应用程序设计技术和互联网应用技术; 2)课程设计论文编写要求)课程设计论文编写要求 (1)理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标 准格式进行书写和装订。 (2)课程设计报告(论文)包括目录、绪论、正文、设计小结、参考文献、附 录等。 3)自主要求设计)自主要求设计 (1)掌握 tcp 的概念和工作原理; (2)熟练掌握 c#语言的编程原理; (3)实现基于 tcp 协议的聊天程序设计; (4)运行程序,并合理分析实验结果。 - 3 - 第二章第二章 开发工具及相关技术开发工具及相关技术 2.1 c#概述概述 c#(c sharp)是微软(microsoft)为.net framework 量身订做的程序语言, c#拥有 c/c+的强大功能以及 visual basic 简易使用的特性,是第一个组件导 向(component-oriented)的程序语言,和 c+与 java 一样亦为对象导向(object- oriented)程序语言。c#具有以下特点: (1)语法简洁。 (2)面向对象设计。 (3)与 web 紧密结合。 (4)完整的安全性和错误处理。 (5)版本控制。 (6)兼容性。 (7)灵活性。 2.2 tcp/ip 概述概述 1)什么是 tcp/ip tcp/ip 指的是 internet 上使用的两种网络协议:传输控制协议和网际协议; 事实上,tcp 协诡计和 ip 协议只是一个称为 tcp/ip 协议族中的两种而已。 tcp/ip 协议族可以将各种操作系统和网络部件连接起来,它能提供一种在各种 系统间移动数据的标准方法。这些协议既可以用于 internet 上,也可以用于专 用网中。 tcp/ip 结构中包含两种传输层协议。其一传输控制协议(tcp) ,确保信 息传输过程。其二用户数据报协议(udp) ,直接传输数据报,而不需要提供端 对端可靠校验。两种协议对应不同的应用具有各自功能。 2)tcp/ip 体系结构与特点 - 4 - tcp/ip 体系结构 tcp/ip 协议实际上就是在物理网上的一组完整的网络协议。其中 tcp 是提 供传输层服务,而 ip 则是提供网络服务。tcp/ip 包括以下协议:(结构如图 2.1) 图 2.1 tcp/ip 体系结构 tcp/ip 特点 tcp/ip 协议的核心部分是传输层协议(tcp、udp),网络层协议(ip)和物理 接口层,这三层通常是在操作系统内核中实现。因此用户一般不涉及。编程时, 编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函 数方式提供的各种函数。前者为核内实现,后者为核外实现。用户服务要通过 核外的应用程序才能实现,所以要使用套接字(socket)来实现。 - 5 - 图 2.2 tcp/ip 协议核心与应用程序关系图。 2.3 c/s 模式模式 在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器 网,client/server。在客户机/服务器网络中,服务器是网络的核心,而客户机 是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机 提供网络必须的资源。 它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任 务合理分配到 client 端和 server 端来实现,降低了系统的通讯开销。目前大多 数应用软件系统都是 client/server 形式的两层结构,由于现在的软件应用系统 正在向分布式的 web 应用发展,web 和 client/server 应用都可以进行同样的业 务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访 问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系 统。这也就是目前应用系统的发展方向。 c/s 工作过程如下: 服务器端描述:s 端启动服务进程,并监听相应端口。然后,若收到 c 端 发出的有关请求,按如下情况给出相应的反映:将收到的包进行检测,若收到 的包有错则抛弃(discard) ,并发给 c 端一个 negtive ack。若收到的包正常, 则将此包进行解包,将内容输出至一临时文件;并发给 c 端一个 positive ack。依次收到来自 c 端的包,直到收到 end 为止,并关闭此进程,转回监听 状态。 - 6 - 客户端描述为:若收到的为 positive ack,则继续发包;若收到的为 negtive ack,则将应发的包重发。直到 c 端将所有要发的包都发完,并都已经收到 s 端 的回应,最后发一个 end 包,直接关闭此进程。 综上所述,应用中的服务器程序必须先于客户机进程启动,直到对客户机 的响应结束或强迫终止。 2.4 winsock 编程技术编程技术 windows sockets 是一套开放的、支持多种协议的 windows 下的网络编程 接口。现在的 winsock 已经基本上实现了与协议无关,你可以使用 winsock 来 调用多种协议的功能,但较常使用的是 tcp/ip 协议。winsockets 无疑是我们进 行网络编程的利器。 1)专用术语 套接字 套接字是网络的基本构件。它是可以被命名和寻址的通信端点,使用中的 每一个套接字都有其类型和一个与之相连听进程。套接字存在通信区域(通信 区域又称地址簇)中。套接字只与同一区域中的套接字交换数据(跨区域时, 需要执行某和转换进程才能实现) 。windows 中的套接字只支持一个域 网际域。套接字具有类型。 windows socket 1.1 版本支持两种套接字:流套接字 (sock_stream)和数据报套接字(sock_dgram) windows sockets 实现 一个 windows sockets 实现是指实现了 windows sockets 规范所 描述的全部功能的一套软件。一般通过 dll 文件来实现(ws2_32. dll) 阻塞处理例程 阻塞处理例程(blocking hook,阻塞钩子)是 windows sockets 实现为了 支持阻塞套接字函数调用而提供的一种机制。 多址广播(multicast,多点传送或组播) 是一种一对多的传输方式,传输发起者通过一次传输就将信息传送到一组 接收者,与单点传送(unicast)和广播(broadcast)相对应。 2) 面向连接的套接字的系统调用时序图 - 7 - 图 2-3 系统调用时序图 - 8 - 第三章第三章 基于基于 tcp 的的 c/s 聊天程序的详细设计方案聊天程序的详细设计方案 3.1 tcp 设计思路设计思路 为了简化编程,.net 提供面向 tcp 编程的相关类,主要包括 tcpclient 和 tcplistener。tcpclient 类为 tcp 网络服务提供客户端连接,它构建于 socket 类之上,以提供较高级别的 tcp 服务,即提供了通过网络连接、发送和接收数 据的简单方法。用于在同步阻止模式下通过网络来连接、发送和接收流数据。 另外,通过与 networkstream 对象的关联,使得用户可以通过流操作方式实现 对网络连接状态下数据的发送和接收。通过 tcpclient 类实现与 tcp 主机的通 信流程如下图所示: 创建tcpclient实例 利用networkstream实例 发送和接收数据 与远程主机建立连接 关闭tcp套接字 图 3-1 tcpclient 类通信流程图 tcpclient 类实现了客户端编程抽象,因此构建客户端网络应用程序便可以 直接使用 tcpclient 取代 socket,更加方便易用。同样,对于服务器端应用程序 的构建,c#提供了 tcplistener 类。该类也是构建于 socket 之上,提供了更高 抽象级别的 tcp 服务,使得程序员能更方便地编写服务器端应用程序。 通常情况下,服务器端应用程序在启动时将首先绑定本地网络接口的 ip 地 址和端口号,然后进入侦听客户请求的状态,以便于客户端应用程序提出显式 请求。一旦侦听到有客户端应用程序请求连接侦听端口,服务器端应用将接受 - 9 - 请求,并建立一个负责与客户端应用程序通信的信道,即通过创建连接套接字 与客户端应用程序建立连接,由连接套接字完成与客户端应用程序的数据传送 操作,服务器端应用程序继续侦听更多的客户端连接请求。tcplistener 通过实 例创建过程完成与本地网络接口的绑定,并由所创建的实例调用 start 方法启动 侦听;当侦听到客户端应用程序的连接请求后,根据客户端应用程序的不同请 求方式,可以通过 accepttcpclient 方法接受传入的连接请求并创建 tcpclient 实例以处理请求,或者通过 acceptsocket 方法接受传入的连接请求并创建 socket 实例以处理请求,并由所创建的 tcpclient 实例或 socket 实例完成与客 户端应用程序的网络数据传输。最后,需要使用 stop 关闭用于侦听传入连接的 socket,同时也必须关闭从 acceptsocket 或 accepttcpclient 返回的任何实例, 以释放相关资源。其实现流程如下图所示: 创建tcplistener实例 侦听 停止服务 接收连接请求 收发数据 图 3-2 tcplistener 类通信流程图 3.2 客户端客户端 2 编程步骤编程步骤 (1)新建一个客户端窗口程序:formclient - 10 - (2) 对窗口程序进行界面设计,由于功能比较简单,并没有做做到尽善尽美, 只是做到简单的通信与显示信息,主要用到了三个主要空间: llistboxstatus,textbox,button,其中,llistboxstatus 用来显示与服务器端的 连接状态,两个 textbox 分别表示接收的信息和准备发送的信息,两个 button 分别用来表示连接和发送。将各控件的名字改为有实际意义,容易标记的名字。 (3)核心代码编写 进入编写代码模式,在开头中添加所要用到的命名空间如: using system.net; /提供一个统一、简单的编程接口 using system.net.sockets;/提供windows套接字接口的托管实现 using system.threading;/提供类和接口支持线程程序设计所需实现功能 如下代码描述了 tcpclient 实例的创建以及与指定远程主机的连接过程。 mytcpclient = new tcpclient(); mytcpclient.connect(ipaddress.parse(textbox1.text),int.parse(textbox2.t ext);/ 创建实例 mynst = mytcpclient.getstream();/获取数据流 mysread = new streamreader(mynst,system.text.encoding.default);/创建流读实例 myswrite = new streamwriter(mynst,system.text.encoding.default);/创建流写实例 mythread = new thread(new threadstart(reading);/创建新 线程,用新创建线程启动readin函数 mythread.start(); messagebox.show(“连接服务器成功!“); 与远程主机连接成功后,利用 networkstream 实例发送和接收数据。该方 法首先通过 client.getstream 来返回 networkstream 实例,进而利用所获取的 networkstream 实例的读写方法 write 和 read 来发送和接收数据,其实现代码 如下所示: 读对方传过来的 for (int i = 0; i “ + “rn“ + richtextbox2.text + “rn“ + “rn“; /messagebox.show(mymsg.length.tostring(); myswrite.writeline(mymsg); myswrite.flush(); richtextbox2.clear(); richtextbox1.appendtext(mymsg); richtextbox1.select(richtextbox1.textlength - mymsg.length + 29, mymsg.length); richtextbox1.selectioncolor = color.blue; 在与服务器完成通信后,应该调用 close( )方法释放所有的资源。 3.3 客户端客户端 1(带服务器性质)编程步骤(带服务器性质)编程步骤 (1)新建一个服务器端窗口程序:formserver (2)对窗口程序进行界面设计,由于功能比较简单,并没有做做到尽善尽美, 只是做到简单的通信与显示信息,主要用到了三个主要空间: llistboxstatus,textbox,button,其中,llistboxstatus 用来显示与客户端的连 接状态,两个 textbox 分别表示接收的信息和准备发送的信息,三个 button 分 别用来表示开始监听、停止监听和发送。将各控件的名字改为有实际意义,容 易标记的名字。 (3)核心代码编写 进入编写代码模式,在开头中添加所要用到的命名空间如: using system.net; /提供一个统一、简单的编程接口 using system.net.sockets;/提供windows套接字接口的托管实现 using system.threading;/提供类和接口支持线程程序设计所需实现功能 创建 tcplistener 实例,调用 start 方法启动侦听,即该方法调用 - 12 - tcplistener 实例的基础 socket 上的 listen 方法,开始侦听客户的连接请求,代 码如下: mytcplistener = new tcplistener(ipaddress.parse(textbox1.text),int.parse(textbox2.text); mytcplistener.start(); mytcpserver = mytcplistener.accepttcpclient(); mytcplistener.stop(); 当侦听到有客户连接请求时,使用 accepttcpclient 接收任何当前在队列 中挂起的连接请求,并返回一个 tcpclient 实例以接受客户的连接请求,如下 面代码所示: mynetst = mytcpserver.getstream(); mysread = new streamreader(mynetst,system.text.encoding.default); myswrite = new streamwriter(mynetst,system.text.encoding.default);/ mythread = new thread(new threadstart(reading); mythread.start(); messagebox.show(“服务器开启成功“); 由于返回的是 tcpclient 实例,所以可以通过对 networkstream 的读写来 实现与客户的通信。在这里引入了多线程技术,为每个客户的连接建立一个线 程,在该线程中实现与客户的数据通信,代码如下: threadstart ts = new threadstart(acceptconnect);/客户连接 thread mythread = new thread(ts);/创建线程 mythread.start();/启动线程 与客户程序通信完成之后,最后一步是停止监听套接字,调用 tcplistener 的 stop 方法来实现 private void server_formclosed(object sender,formclosingeventargs e) closesever(); - 13 - 第四章第四章 聊天程序的功能分析聊天程序的功能分析 4.1 程序的使用流程程序的使用流程 初始界面如下所示: 图 4-1 客户端 1 端初始界面图 图 4-2 客户端 2 初始界面图 客户端 1 首先“开始监听” ,客户端打开“连接”按钮,客户端 1 监听到客 户端 2 的链接请求后,会显示下面的的结果: 图 4-3 服务器端成功监听到客户端的连接请求情况图 客户端 2 和客户端 1 进行连接后,可以进行正常的聊天了。客户端 2 与客 户端 1 端通话情况如下图所示: - 14 - 图 4-4 实现通信后的客户端 2 端界面图 图 4-5 实现通信后的客户端 1 端界面图 关于软件的介绍初始化界面 图 4-6 软件的介绍初始化界面图 4.2 程序的相关介绍程序的相关介绍 软件的使用帮助 图 4-7 软件的使用帮助界面图 软件的版权说明 图 4-8 软件的版权说明界面图 4.3 结果分析结果分析 根据以上程序的执行情况可知,服务器端和客户端实现成功的连接。根据 客户端和服务器端的通信状况可知,所设计的聊天程序符合要求,达到了预期 的目标。 - 15 - 第五章第五章 实验心得体会实验心得体会 通过近一个星期的课程设计,我受益匪浅。本次课程设计是利用 c#编写的。 首先,我复习了之前学的 c#网络编程知识,弄懂了 c#编程的方法和规则。其次, 更加全面的了解并掌握 tcp 网络层协议的概念和工作原理。本次课程设计实现 了 tcp 的 c/s 聊天程序。从一点点思想到流程图再到整个程序的编写,调试, 无一不花费了我许多的精力。看着自己的劳动果实,反倒十分的欣慰,更认识 到自己的不足。今后的学习过程中要不断的积累经验,开阔思维以得到提高。 总之,课程设计的过程就是一个汲取知识的过程,从中受益匪浅,通过这 次课程设计使我懂得了理论与实践相结合的重要性,只有理论知识是远远不够 的,只有把所学的理论知识与实践结合起来,从实践中得出结论,才能真正的 提高。同时,也使我认识到自己动手能力太差,为我以后的学习和发展敲了一 个警钟!本次课程设计的过程中,虽然遇到了不少问题,但最后还是成功的完 成了,这得益于老师的指导和同学们的帮助,同时,也使我充分体验到了团结 的重要性。还有,勤动手的重要性,在以前我总是有“只学不练”的倾向,导 致动手能力得不到提高,在这次的一次次编写代码、调试代码的过程中,我才 明白“代码不是写出来的,是调出来的”的道理。对待任何事情都要有耐心和 恒心,遇到问题要冷静地思考,积极找出症结所在,逐个解决。 最后,在这里我要感谢学校为我们提供这次锻炼的机会,同时也感谢各位 老师对我的指导和同学们的帮助,希望以后能多有这样的锻炼机会。在课程设 计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎 么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克 服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设 计的精神带到生活中,不畏艰难,勇往直前! 课程设计结束了,从中我们也学到了不少知识。当然也培养了我们一种学 习的心态,坚持坚持再坚持,严谨严谨再严谨。虽然计算机网络的课程设计与 学习已经结束,可我们学习之路并没有结束,我们会继续努力学习其相关的知 识,以适应社会的发展与需要,这样才能真正成为一名合格的大学生。 - 16 - 参考文献参考文献 1 谢希仁, 计算机网络m.北京:电子工业出版社,2008 2郑小平, visual c#.net 开发实践m.北京:人民邮电出版社,2001 3谭献海, 网络编程技术及应用m.北京:清华大学出版社,2006 附录附录 1 private void button2_click(object sender, eventargs e)/“开启服务器”按钮 mymainthread = new thread(new threadstart(listening); mymainthread.start(); private void listening()/监听函数实现 toolstripstatuslabel1.text = “请稍等“; mytcplistener = new tcplistener(ipaddress.parse (textbox1.text),int.parse(textbox2.text); mytcplistener.start(); mytcpserver = mytcplistener.accepttcpclient(); mytcplistener.stop(); mynetst = mytcpserver.getstream(); mysread = new streamreader (mynetst,system.text.encoding.default); myswrite = new streamwriter (mynetst,system.text.encoding.default);/ mythread = new thread(new threadstart(reading); mythread.start(); messagebox.show(“服务器开启成功!“); private void reading()/读取并显示网络数据函数实现 toolstripstatuslabel1.text = “正在聊天中“; while(true) for (int i = 0; i “ + “rn“+richtextbox2.text+“rn“+“rn“; /messagebox.show(mymsg.length.tostring(); myswrite.writeline(mymsg);/将自己聊天内容写入内存缓冲区 myswrite.flush();/将缓冲区内容发入网络流并清空 richtextbox2.clear();/清空聊天内容编辑框 richtextbox1.appendtext(mymsg);/调用 appendtext()函数, 在聊天内容显示框显示自己聊天内容 richtextbox1.select(richtextbox1.textlength- mymsg.length+29,mymsg.length);/选取自己的聊天内容 richtextbox1.selectioncolor = color.blue;/对自己聊天内 容染色显示 private void button3_click(object sender, eventargs e)/“关闭服务器”按钮 closesever(); toolstripstatuslabel1.text = “已停止聊天!“; private void server_formclosed(object sender,formclosingeventargs e)/窗口关闭事件 closesever(); private void closesever()/关闭聊天服务器端善后程序实现 try if(mytcplistener!=null) mytcplistener.stop(); if(mytcpserver!=null) mytcpserver.close(); - 18 - catch /toolstripstatuslabel1.text = “关闭服务器发生错误!“; if(mythread!=null) if(mythread.isalive) mythread.abort(); if (mymainthread != null) if(mymainthread.isalive) mymainthread.abort(); private void button4_click(object sender, eventargs e)/“ 退出”按钮 close();/调用系统函数,退出窗口 private void server_load(object sender, eventargs e) toolstripstatuslabel1.text = “还没开始聊天,请点击启 动服务器按钮进行聊天!“; richtextbox2.focus(); private void button1_click_1(object sender, eventargs e) richtextbox1.clear(); string help = “打开服务器端和客户端窗口后,首先在右边 ip 地址栏里输入服务器端的地址:1、如果在路由器内网中,双方都可以作服务 端;2、如果在外网,则要求独立 ip 的一方作服务器。聊天双方端口号要一致 。“; richtextbox1.appendtext(help); - 19 - private void button2_click_1(object sender, eventargs e) richtextbox1.clear(); string help = “本软件仅作为课程设计和个人交流之用。版权 所有,侵权必究!“; richtextbox1.appendtext(help); 附录附录 2 2 private void button2_click(object sender, eventargs e)/“连接服务器“按钮 toolstripstatuslabel1.text = “请稍等“; mytcpclient = new tcpclient(); mytcpclient.connect(ipaddress.parse (textbox1.text),int.parse(textbox2.text);/连接到远程服务端 mynst = mytcpclient.getstream();/获取数据流 mysread = new streamreader (mynst,system.text.encoding.default);/创建流读实例 myswrite = new streamwriter (mynst,system.text.encoding.default);/创建流写实例 mythread = new thread(new threadstart(reading);/创建 新线程,用新创建的的线程启动 reading 函数 mythread.start(); messagebox.show(“连接服务器成功!“)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国民生银行长沙分行全球校园招聘笔试备考试题及答案解析
- 2025广东广州海珠区沙园街道招聘雇员2人笔试模拟试题及答案解析
- 2026华能(上海)电力检修有限责任公司校园招聘笔试模拟试题及答案解析
- 2025年皮肤科痤疮皮肤护理的注意事项模拟测试卷答案及解析
- 2025江苏南京财经大学招聘工作人员4人笔试模拟试题及答案解析
- 2025河南郑州航空港经济综合实验区公立医疗机构招聘人事代理工作人员36人笔试备考试题及答案解析
- 2025浙江舟山市定海区文化和广电旅游体育局招聘编外用工人员笔试模拟试题及答案解析
- 2026中国葛洲坝集团电力有限责任公司校园招聘笔试参考题库附答案解析
- 2025年急诊科学科心肺复苏操作流程评估模拟试卷答案及解析
- 2025年麻醉科药物应用及剂量把握模拟考试卷答案及解析
- 企业防台风安全培训课件
- 2025年全国消防设施操作员中级理论考试(单选上)
- 产品设计调研课件
- 2024年黑龙江省《辅警招聘考试必刷500题》考试题库附完整答案
- 静脉输液团标课件
- 高校实验室安全基础课(实验室准入教育)学习通网课章节测试答案
- 液压泵站使用说明书
- 职工三级安全教育卡模版
- 化工企业物料编码规则物料分类清晰、编码简短、容易识别
- 儿科学腹泻病
- CT介入学及CT引导下肺穿活检术课件
评论
0/150
提交评论