《网络编程课程设计-.docx》由会员分享,可在线阅读,更多相关《网络编程课程设计-.docx(10页珍藏版)》请在第壹文秘上搜索。
1、随着计算机网络技术的飞速开展,比方基于互联网的信息发布,通信,数据共享等等。网络技术越来越受到人们的盘视,它已逐渐渗入我们生活的各个层面,网络聊天工具在丰富的网络生活中也扮演了歪要的角色.陶若计算机网络技术的开展,很多政府机构,企业,学校,都是先以一个统一的同域网联结在一起,再分别接入INTERNET.因此基丁局域网的即时通信工具,就这样应运而生了。所以本系统主要完成了在局域网内的简单异步聊天功能,并在WINDOWS平台上加以了实现.程序分为客户端和效劳器端两个程序。用多线程实现不同的并行任务*并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。本文通过
2、局域网聊天系统来具体共享内存实现进程间的数据交换,利用WindoWS消息机制实现进程间的同步,两种机制结合使用。关键词:异步聊天:局域网:即时通信:客户端:效劳端:多线程:进程同步:12)在线用户主机名列表的维护。(3)在C/S模式中,效劳器与客户端是相互依赖的。(4)操作简雎,界面荷洁美观,有背景,有字体设置,有表情选择等。2.2系统应具备的根本功能2.3开发环境及工具2.3.1 运行环境Windows系统在装有Visua1.studio25及以上版本的系统2.3.2 C#网络编程技术介绍s这些类和方法可以帮助我们进行网络编程,通过网络进行通信.通信可以是面向连接的,也可以是面向无连接的;既
3、可以采用数据流模式,也可以采用数据报的模式.广泛使用的TCP协议用基于数据流的通信,而UDP协议用于基于数据报的通信.Systein-Net.Sokcets-Socket是Syse11.Net.Socke1.s名空间下面一个非常i宾要的类.每一个套接字的实例都有一个本地的和一个远程的端点附加在上面.本地的端点包括了当前套接字实例的连接信息.,NET还提供了其它的一些类用于我们进行网络编程,像IPEndPoint.IPAddress.SockeiExcepiion等等.NET支持同步和异步两种在客户机和效劳器之间的通信方式.NET提供了不同的方法用于支持这两种类型的通信,同步的方法工作在阻塞模式
4、,方法在工作完成之前是不返回的,但是异步的方法工作在非阻塞模式,但是立即返回的,可能在快作完成之前.DnS类位于S名空间下,它用于创立和发送个请求用于从DNS效劳器获取一个主机效劳器的信息.当然,在访问DNS之前,机器必须首先要连接到网络上,当在一台独立的机器上执行DNS隹询时,由于无法连接到DNS效劳器,就会产生一个Systm.Nct-SockctExccption异常.这个类的所有成员方法都是静态的.这个类中最重要的方法是:PUbIiCstaticIPHostEntryGe1.HostByddress(stingaddress)地址应该是一个用点开的正确的IP地址,这个方法返回一个IPHo
5、stEmry实例,它包括了主机的信息,如果DNS效劳器不可用.这个方法聘产生一个SockctExccpiion异常.pub1.icstaticstringGCIHoStNameo这个方法返回本地机涔的DNS效劳器名称.pub1.icstaticIPHostEntryReso1.ve(stringhostname)这个方法解析个DNS主机名称或IP地址为一个IP加WEn1.ry实例.主机名称应该是一个用点分开的IP地址,如:127.0Q1.IPHOStEnIry类,IPHOS1.Entry类是一个容器类,它包含INTERNET上主机的地址信息.这个类不是线程平安的.下面是这个类的几个重要成员.A
6、ddress1.ist属性,该属性给H1.个IPAddreSS的数组,可以获取或设置与主机关联的IP地址列表.A1.iases属性,该属性用于获取或设置与主机关联的别名列Manua1.ResctEvcnt允许线程通过发信号互相通信.通常,此通信涉及一个线程在其他线程进行之前必须完成的任务.当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用Reset以将Manua1.ResetEvent置于非终止状态.此戏程可被视为控制Manua1.ResetEvent调用ManiiaIRese1.Event上的Wai1.One的线程将咀止.并等待信号.当控制线程完成活动时.它彻用Set以发
7、出等待线程可以继续进行的信号.并拜放所有等待浅程.一旦它被终止Manu川RCsCtEVCnt将保持终止状态.直到它被手动加置.即对Wai1.One的调用将立即返回,可以通过将布尔伊传递冷构造函数来控制ManUa1.ReSe(EVen1.的初始状态,如果初始状态处于终止状态,为1.ne:否那么为fa1.se2.3.3 ViSua1.Studio开发环境介绍Visua1.Studio2005和.NETFramework2.0将在应用程序开发的所有方面取得大幅进展。首先,Visua1.Studio2005根据开发人员个人的需要调整软件开发体验,设置新的开发人员工作效率标准。这一“个性化工作效率”将在
8、开发环境和.NETFrameWork类库中提供相应的功能,以帮助开发人员在最少的时间内克服其最为紧迫的困难。其次,Visua1.Studio2005使开发人员能够通过与MicrosoftOfficeSystem和SQ1.Server2005的更好集成,在更广泛的应用程序开发方案中应用现有的技能。最后,Visua1.Studio2005耨提供一组新的工具和功能,以满足目前大规模企业的应用程序开发需要.ComboBox1.1.nvokascmmboboKcaHbackc1.icnt.C1.icm.RcmotcE11dPoint.TString();DataReadWritedatareadwrit
9、e=newDataReadWrite(C1.ient);c1.ien1.1.ist.Add(da1.anedwriie):ScndString(datarcaditc.e!);dacarcadwritc.ns.BcginRcad(da(arcadwritc.rcad.Ogth,ReadCa1.IBack,datareadwrite);Icatch(Exceptionc)(1.is(BoxS(a(us.1.nvoke(set1.is(boxca1.1.backe.Message);return:)从客户端读取信息处理的异步回调方法privatevoidReadca1.1.BacMIAsyncRe
10、suItiar)IIry(Da1.aReadWritcdatareadwrite=(DataReadWrite)iar.AsyncS(a1.e;intreev=datarcadwritc.ns.EndRcad(iar);rich1.cxtBoxI.1.nvokc(sctrichtcxboxca1.1.tack,string.Format(M|(0)|(kuea:if(isExit=fa1.se)Idaiaadwri(e.1.ni(Rea1.Array();da1.arcadwriie.ns.BeginRead(da1.arcadwri1.e.vad.O.gth.KeadCa1.1.Back.d
11、atareadwrite):)catch(Exceptionc)I1.iscBoxS:ComboBox1.1.tcms.Add(bj);J发送数据privatevoidbutton1_C1.ick(objcctsender.EventArgsc)(intindex=ComboBox1.SeIeciedIndex;if(index=-1)IMCZigCBox.Shw(,请先选择接收方,声单击发送”);)e1.seIsiringsi=效劳器端+oomboBox2.Se1.ectedhem+”对你说:二sirings2=richTex1.Box2.Text:stringScndstring=S1.+
12、s2:DataRcadWritcobj=(DataRcadVritc)c1.icnt1.is(index;SendS(ring(objSendsiringVZif1.JIJSendString方法发送数据richTex1.Box2.C1.eart):stringSc1.fstring=你可0+comboBox2.Sc1.cctcd1.cm+说:+s2+Wn”:FichIcxtBoxI.AppcndText(sc1fs(ring);)效劳器停止privatevoidbutton3-C1.ick(objcc(sender,Evcn1.Argsc)(isExi(=true:a1.1.Donc.Sct
13、();huton2.Enab1.cd-true;bion3.Enab1.ed=fa1.se;)privatevoid字体1.bo1.StripMcnuhem_C1.ick(objectsender.EvcntArgsc)(FontDiaIogfo11(Dia1.og=newFontDiaIogO;(ontDia1.og.Co1.or=richTextBx1.FotcCoIoefontDia1.og.A1.1.owScripChangc=true:fntDia1.og.Sho,Co1.or=true;if(fontDia1.og.ShowDia1.og!=Dia1.QgResuIttCanceI)(richIcxtBoxI.Sc1.cctionFont=fontDia1.og.Font:rich1.cxtBoxI.Sc1.cciionCokx=fontDia1.og.Co1.r;richTex(Box2,Se1.ec(ionFo11=fb11(Dia1.og.Fog.C1.or:)IprivatevoidFormI-1.oad(objectsender,EYenIArgSe)(COmbOBoX2Jtcms-Add(笑着地):8mboBox2.Items.Add(快乐地8mboBox2.Item乳AddC含怡脉脑地COmbUBuX2.Items.Add(微笑地):COmboB