计算机网络课程设计报告--基于TCP的网络聊天室系统.docx

上传人:lao****ou 文档编号:1118571 上传时间:2024-11-20 格式:DOCX 页数:24 大小:80.82KB
下载 相关 举报
计算机网络课程设计报告--基于TCP的网络聊天室系统.docx_第1页
第1页 / 共24页
计算机网络课程设计报告--基于TCP的网络聊天室系统.docx_第2页
第2页 / 共24页
计算机网络课程设计报告--基于TCP的网络聊天室系统.docx_第3页
第3页 / 共24页
计算机网络课程设计报告--基于TCP的网络聊天室系统.docx_第4页
第4页 / 共24页
计算机网络课程设计报告--基于TCP的网络聊天室系统.docx_第5页
第5页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《计算机网络课程设计报告--基于TCP的网络聊天室系统.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告--基于TCP的网络聊天室系统.docx(24页珍藏版)》请在第一文库网上搜索。

1、计算机网络课程设计报告基于TCP的网络聊天室系统一、问题描述题目:基于TCP的网络聊天室系统。在JAvA中,基于TCP协议实现网络通信的类有两个:在客户端的Socket类和服务器端的SeverSocket类。SeverSocket类的功能是建立一个Sever,并通过accentO方法随时监听客户端的连接请求。二、概要设计(抽象数据类型定义).*;importjava.io.*;pub1icc1assNode/用户链表结点Stringusername=nu11;/用户昵称Socketsocket=nu11;ObjectInputStreaminput=nu11;ObjectOutputstrea

2、moutput=nu11;Nodenext=nu11;流程图:Ou1pucStrvmScSOCkeu)StfvcrSockct三、详细设计(主要算法和函数间的调用关系)(1) Node,java用户链接结点,包含用户名、SoCket接口输入输出流和保存下一个用户结点的“指针”.*;importjava.io.*;pub1icc1assNode/用户链表结点Stringusername=nu11;Socketsocket=nu11;ObjectInputStreaminput=nu11;ObjectOutputstreamoutput=nu11;Nodenext=nu11;)(2) User1i

3、nk1ist.java对用户链表的操作,有添加用户、删除用户、根据用户名查找用户和根据索引查找用户。pub1icc1assUser1ink1ist用户链表操作Nodehead;Nodepointer;intcount;pub1icUSer1ink1iSt()构造用户链表head=newNode();head.next=nu11;pointer=nu11;count=0;pub1icvoidaddUser(Noden)/添力U用户pointer=head;whi1e(pointer.next!=nu11)pointer=pointer.next;)pointer.next=n;n.next=nu

4、11;count+;pub1icvoidde1User(Noden)/删除用户pointer=head;whi1e(pointer.next!=nu11)if(pointer.next=n)pointer.next=n.next;count;break;)pointer=pointer.next;)pub1icintgetCount()/返回用户数returncount;pub1icNodefindUser(StringUSername)/根据用户名查找用户if(count=0)returnnu11;pointer=head;whi1e(pointer.next!=nu11)pointer=p

5、ointer.next;if(pointer.username.equa1sIgnoreCase(username)returnpointer;)returnnu11;)pub1icNodefindUser(intindex)/根据索弓查找用户if(count=O)returnnu11;if(countO)returnnu11;pointer=head;inti=O;whi1e(iindex+1)if(pointer.next!=nu11)pointer=pointer.next;e1sereturnnu11;i+;)returnpointer;)(3) ChatSever.java服务器端的

6、主程序,主要是服务器端的界面的和一些功能按钮,包括用户列表窗口、消息窗口、端口设置按钮、启动服务按钮、停止服务按钮和退出程序按钮。设置端口的功能是弹出一个对话框,在对话框架中改变端口再保存,所以设置端口对话框要在另一个类中实现,主程序中要把端口号定义为静态变量,可以让其他类以静态的方式引用。启动服务就是生成一个SeVerSOCket实例对象,初始化用户链表,调用监听客户端的连接请求的线程类。按下停止服务按钮,首先要向所有用户发送“服务关闭”信息,然后再关闭所有SoCket接口和输入输出流。在退出程序之前,也要经过停止服务这个阶段。importjava.awt.*;importjava.awt.

7、event.*;importjavax.swing.*;.*;pub1icc1assChatServerimp1ementsAction1istenerpub1icstaticintport=6666;服务端的侦听口ServerSocketSerVerSoCket;服务端SocketJFrameframe;JMenuBarmenubar;建立菜单栏JMenuSerViCemenu;建立菜单组建立菜单项JMenu1temPOrtiIen1;端口设置JMenu1temStartiten);启动服务JMenu1temStOPiIeni;停止服务JMenu1temexititem;退出JMenuhe1

8、pmenu;JMenu1temhe1pi1em;帮助J1abe11abe1;JPane1pane1;JScro11Paneuserscro11pane;窗口滚动条JScro11Panemessagescro11pane;窗口滚动条JTextAreaUSerShow;用户列表窗口JTextAreaDiessageshow;消息窗口Dimensionframesize;窗口的尺寸DimensionSCreensize;屏幕的尺寸User1ink1istUSer1inkIist;用户链表Server1istenSerVerIiSIer);/端口侦听pub1icChatServer()frame=ne

9、wJFrame(服务器);Containercontentpane=frame.getContentPane();frame.Set1ayout(newBorder1ayout(5,10);menubar=newJMenuBarO;frame.SetJMenuBar(menubar);Servicemenu=newJMenU(服务器);menubar.add(servicemenu);portitem=newJMenU1IenI(端口设置”);startitem=newJMenU1tein(启动服务”);stopitem=newJMenUIteIn(停止服务”);exititem=newJMe

10、nUIten(退出);servicemenu,add(portitem);servicemenu.add(startitem);servicemenu,add(stopitem);servicemenu,add(exititem);stopitem.SetEnabied(Fa1se);初始时,令停止服务按钮不可用为菜单栏添加事件监听portitem.addction1istener(this);Startitem.addAction1istener(this);stopitem.addAction1istener(this);exititem.addAction1istener(this);h

11、e1pmenu=newJMenu(帮助”);menubar.add(he1pmenu);he1pitem=newJMenU1ten(帮助”);he1pmenu.add(he1pitem);he1pitem.addction1istener(this);1abe1=newJ1abeI(在线人数聊天内容”);contentpane.add(1abe1,Border1ayout.NORTH);usershow=newJTeXtArea(20,10);用户列表窗口usershow.SetEnab1ed(fa1se);userscro11pane=newJScro1IPane添加滚动条(usershow

12、,JScro11Pane.VERTICA1SCRO11BARASNEEDED,JScro1!Pane.HORIZONTA1SCRO11BARAS_NEEDED);contentpane,add(userscro11pane,Border1ayout.WEST);messageshow=newJTeXtArea(20,50);消息窗口messageshow.SetEnab1ed(fa1se);messagescro11pane=newJSCroI1Pane添加滚动条(messageshow,JScro11Pane.VERTICA1SCRO11BARASNEEDED,JScro11Pane.HOR

13、IZONTA1SCRO11BARAS_NEEDED);contentpane,add(messagescro11pane,Border1ayout.CENTER);frame,packO;设置运行时窗口的位置framesize=frame.getSize();screensize=Too1kit.getDefau1tToo1kitO.getScreenSize();intx=(int)(screensize,width-framesize.getWidth()2;inty=(int)(screensize,height-framesize.getHeight()/2;frame.Set1oca

14、tion(x,y);frame.SetResizab1e(fa1se);frame.setVisib1e(true);frame.SetDefau1tcioseOperation(JFrame.EXITONC1OSE);frame.addWindow1istener(newWindowAdapterOpub1icvoidwindo1osing(WindowEvente)StopServiceO;System.exit(0););pub1icvoidactionPerformed(ActionEvente)事件处理Objectobj=e.getSource();if(obj=portitem)newSe1POrt(frame);设置端口e1seif(obj=startitem)StartSerViCe();启动服务e1seif(obj=StoPiteIn)停止服务inti=JOptionPane.ShowConfirniDia1og(frame,真的停止服务吗?”,停止服务,JOptionPane.YESOPTION,JOptionPane.QUESTION.MESSAGE);if(i=JOptionPane.YES.OPTION)StopServiceO;e1seif(obj=exititem)退出intj=JOptionPane.ShowConfirniD

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服