多人聊天程序设计_第1页
多人聊天程序设计_第2页
多人聊天程序设计_第3页
多人聊天程序设计_第4页
多人聊天程序设计_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.zInternet网络程序设计实验报告基于Socket的多人聊天室程序设计1205*中秋李贻鹏李歆1206高蕾指导教师:陆永忠目录1实验目的及要求21.1实验目的21.2实验要求22实验环境33实验程序设计33.1设计思想33.2程序设计流程框图43.3详细设计5界面设计6主要功能实现63.4运行结果94实验感想11实验目的及要求实验目的熟悉典型协议的通讯机制,掌握基于它们的网络系统设计方法。实验要求编写复杂的多人聊天室程序。实验环境编译环境:Eclipse运行环境:Windows7操作系统+jdk7实验程序设计设计思想根据实验的要求:在联网的多台计算机之间实现多人聊天功能,则需要程序提供一种快速、简便的网络传输效劳来保证聊天的实时性。对于该程序实时性应放在首要地位予以考虑和设计。于是,我采用基于TCP协议的Windowssockets来设计实现本实验。程序设计流程框图创立新的通信端点创立新的通信端点将一个本地地址关联到套接字上阻塞,等待客户端发送数据发送数据释放连接完毕开场向效劳器发送数据创立新的通信端点承受数据释放连接完毕开场效劳器端效劳请求客户端处理效劳请求效劳应答图1程序设计流程框图详细设计基于TCP的socket编程流程:效劳器端:创立套接字〔socket〕。将套接字绑定到一个本地地址和端口上〔bind〕。等待接收数据〔recvfrom〕。关闭套接字。客户端:创立套接字〔socket〕。向效劳器发送数据〔sendto〕。关闭套接字。界面设计图2程序界面程序由以下局部组成:聊天室聊天内容的接收栏、IP地址控件,用户登录,用户聊天内容的发送栏和内容发送按钮。聊天室聊天内容的接收栏:接收并显示聊天室中聊天者发送的内容;IP地址控件:发送目的地的IP地址;用户登录:用户进入聊天室后显示昵称;用户聊天内容的发送栏:显示聊天者将要发送的内容;内容发送按钮:单击后将用户聊天内容的发送栏的信息发送给目标计算机。主要功能实现套接字库加载:Socketsocket=newSocket();ServerSocketserver=newServerSocket();套接字初始化:客户端:publicvoidsetUpNet(){try{Sockets=newSocket(ipInput.getTe*t(),25003);InputStreamReaderStreamReader=newInputStreamReader(s.getInputStream()); reader=newBufferedReader(StreamReader);writer=newPrintWriter(s.getOutputStream());System.out.println("connectisvivasible!");JOptionPane.showMessageDialog(null,"连接成功"); }catch(IOE*ceptione*){ e*.printStackTrace();JOptionPane.showMessageDialog(null,"连接失败"); } }效劳端:openServiceBtn.addActionListener(newActionListener(){OverridepublicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstubtry{ServerSocketss=newServerSocket(25003);while(true){Sockets=ss.accept();socketList.add(s);finalDataInputStreambufIn=newDataInputStream( s.getInputStream());finalBufferedOutputStreambufOut=newBufferedOutputStream( s.getOutputStream());newThread(newServerThread(s)).start(); } }catch(E*ceptione3){JOptionPane.showConfirmDialog(null,"); }}});接收聊天内容线程:publicclassClientThreadimplementsRunnable{Overridepublicvoidrun(){ //TODOAuto-generatedmethodstubStringcontent;try{while((content=reader.readLine())!=null){System.out.println("read:"+content); chatJTe*t.append(content+"\n"); }}catch(E*ceptione){ e.printStackTrace();} } }聊天内容发送按钮:(类本身作为监听器)if(e.getSource()==sendBtn){try{ //读取Te*tFiled中获取数据 writer.println(nameInput.getTe*t()+"说:"+inputTfd.getTe*t());writer.flush();}catch(E*ceptione*){ e*.printStackTrace(); }inputTfd.setTe*t(");inputTfd.requestFocus(); }运行结果说明:为了便于测试和观察,选择的发送IP地址进展单机测试。当有聊天者在聊天室中发送聊天内容后,程序会接收到聊天内容,并在“聊天室〞栏中显示自己发送的内容和接收到的内容〔与QQ一样〕。由于该测试是用的本地回送IP,所以在“聊天室〞栏中显示的第一条是自己发送出去的内容,第二条是自己接收到的内容。实验感想通过独立完成了这次实验的全部内容,我对多线程网络编程有了更全面、深刻地认识和了解,尤其是对Windowssocket的掌握和编程应用。由于我对JAVA较为熟悉,所以在整个实验过程中,我采用JAVA进展编程来实现这个多人聊天室的网络程序。在程序实现之前,我通过网络上的基于socket网络编程资料和教师课上讲解的内容,认真全面地学习了Windowssocket的运行机制和其在网络编程上的应用方法。在设计实现阶段,由于采用的是基于socket的TCP协议来进展聊天的通信,于是我直接使用的是根底SOCKET类。编码过程中主要遇到的问题集中在多线程的合理高效启动和释放方面上,由于在之前的学习和开发中对多线程的掌握和应用缺乏,所以该实验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论