为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

对等模式的网络聊天室——网络聊天1

2017-09-27 12页 doc 132KB 45阅读

用户头像

is_005190

暂无简介

举报
对等模式的网络聊天室——网络聊天1对等模式的网络聊天室——网络聊天1 **大学 课程设计任务书 09/10 学年第 一 学期 *** 网络工程 *** *** 对等模式的网络聊天室 : ——网络聊天 2009年12月 7日 ~ 2009年 12 月 31 日 : : 网络工程实验室 :** ** 下达任务书日期: 2009 年 12 月 7 日 1.设计目的: 按照网络编程的基本原理,综合运用所学的知识,以小组为单位,设计开发 一个网络应用系统。通过对一个实际问题的分析、设计与实现,将原理与应用相 结合,使学生学会如何把书本上学到的...
对等模式的网络聊天室——网络聊天1
对等模式的网络聊天室——网络聊天1 **大学 课程任务书 09/10 学年第 一 学期 *** 网络 *** *** 对等模式的网络聊天室 : ——网络聊天 2009年12月 7日 ~ 2009年 12 月 31 日 : : 网络工程实验室 :** ** 下达任务书日期: 2009 年 12 月 7 日 1.设计目的: 按照网络编程的基本原理,综合运用所学的知识,以小组为单位,设计开发 一个网络应用系统。通过对一个实际问题的分析、设计与实现,将原理与应用相 结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手 能力;另一方面,使学生能深入理解和灵活掌握教学内容。 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等): 采用套接字方式,完成两台计算机的互联。设计要求: 1) 采用套接字方式建立两台计算机的网络聊天; 2) 采用多线程方式; 3) 采用图形化界面; 4) 操作方面、界面友好。 3.设计工作任务及工作量的要求〔包括课程设计计算书、图纸、 实物样品等〕: 工作任务: 设计对等模式聊天似的网络聊天软件。 工作量的要求: 小组每个成员都需完成独立的功能模块,组长负责协调小组成员,最后联调 成一个完善的应用系统。每人提交一份设计报告。 4.主要参考文献: 1 叶树华,高志红. 网络编程实用教程. 北京:人民邮电出版社,2006 2 汪晓平,钟军. Visual C++网络通信协议与应用实现. 北京:人民邮电出版社, 2003 3 方敏,张彤.网络应用程序设计.安.安电子科技大学出版社,2005 4 黄超.indows下的网络编程.北京.人民邮电出版社,2003 5 耿祥义,张跃平. Java2实用教程. 清华大学出版社,2006 5.设计成果形式及要求: 1.应用软件 2.课程设计说明书 6.工作及进度: 2009年12 月 7 日 ~ 12 月 11 日 需求分析 12 月12日 ~ 12 月 14 日 概念结构设计、逻辑结构设计 12 月15日 ~ 12 月 26 日 编码调试 12 月27日 ~ 12 月 29 日 联调、测试 12 月30日 ~ 12 月 30 日 撰写报告 12 月31日 ~ 12 月 31 日 成绩考核 系主任审查意见: 签字: 年 月 日 ** : *** *** : *** : 网络工程专业 : 对等模式的网络聊天室 ——网络聊天 2009 年 12 月 31 日 对等聊天工具实现的是局域网中的聊天功能,其为一个对等的应用,既是服 务器又是客户端,对等聊天工具既可以自动发现在线的伙伴,又可以和在线的伙 伴进行点对点的聊天。主界面中也可以实现对所以在线伙伴的群聊。 根据所学的Java与网络编程知识,采用套接字方式和多线程方式完成两台 计算机的互联并用编码实现连接,完成题目要求的功能,从而达到掌握开发一个 小型的类似于QQ聊天工具的软件。本课程设计利用Socket 套接字实现主机之间的数据通信,并设计一个网上聊天程序,基于UDP的通信。 开发工具:Eclipse,jdk5.0 运行环境:操作系统:Windows 98/2000 我主要的工作是利用同组成员建立好的连接采用套接字和UDP的方式进行数据的传输,实现两台主机之间信息的发送和接收。 对等模式的聊天系统功能模块图如下: 对等聊天的 主程序代码 初始化,广 播登陆信息 运行界面并进自动获取好点对点聊 天模块 友信息并自行网络连接 动更新 图2.1 对等聊天系统功能模块图 软件分为两个模块,建立网络连接和点对点聊天工具。我主要负责网络聊天 部分,实现信息的的发送和接收。 图2.2 程序流程图 详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,也就是经 过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段 可以把这个描述直接翻译成用某种程序设计语言书写的程序。把经过总体设计得 到的各个模块详细的加以描述。 实现对等聊天功能,使用UDP建立连接并使用UDP实现好友列动态刷新,可以单独选择好友进行聊天,也可以进行群聊,即广播信息。 其中系统功能模块图如图3-1所示。 图3.1 单方上线 图3.2 对方也上线 运行软件,在输入框输入想说的话,选中用户列表,或者进行广播,发送出 去的信息在上面的对话框显示,可以实现局域网内两台或者多台电脑的连接,并 进行实时聊天,由于使用的是基于UDP的通信,不受网络的实时通信状态的影响。 发送信息的核心程序代码如下: private void sendMessage() {//封装一个方法来发送聊天消息 String hostName = (String)PeopleList.getSelectedValue(); if(!(hostName == null) && !(BroadCast.isSelected())) { //给某个选定的用户发送消息 InetAddress hostAddress = PeopleMap.get(hostName); String message = inputArea.getText(); this.playArea.setText(playArea.getText()+localname+" "+"To:"+hostName+"------"+formatter.format(new Date())+"\n"+this.inputArea.getText()+"\n"); if(message.length() > 0) { byte [] me = message.getBytes(); DatagramPacket mePacket = new DatagramPacket(me,me.length,hostAddress,DATA_PORT); try {dataSocket.send(mePacket); inputArea.setText(""); } catch (IOException ioe) { ioe.printStackTrace(); }} else { JOptionPane.showMessageDialog(mainFrame, "发送消息不 能为空!!!");}} else if(BroadCast.isSelected()) { //在组播组内广播消息 String message = inputArea.getText(); if(message.length() > 0) { byte [] me = ("multi"+message).getBytes(); DatagramPacket castPacket = new DatagramPacket(me,me.length,multiAddress,MULTICAST_PORT); try {multiSocket.setLoopbackMode(false); multiSocket.send(castPacket); inputArea.setText(""); } catch (SocketException se) { se.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); }} else { JOptionPane.showMessageDialog(mainFrame, "发送消息不 能为空!!!"); }} else { JOptionPane.showMessageDialog(mainFrame,"请选择您要发送 消息的目的地!!!"); }} 接收信息的核心代码如下: private class ReadChatingThread implements Runnable { //启动一个线程来读取聊天数据 public void run() { while(true) { try {dataSocket.receive(ChatPacket); String hostName = ChatPacket.getAddress().getHostName(); String chat = new String(ChatPacket.getData(),0,ChatPacket.getLength()); //接收到的仅仅是普通的聊天数据 playArea.append("来自:"+hostName+" ------("+formatter.format(new Date())+")\n"+chat+"\n"); } catch (IOException ioe) { ioe.printStackTrace(); }}//while }//run }} 运行程序,在线成员列表中将自动获取本地电脑用户及其它在线用户的网络 地址和用户主机名。 本实验是在一台计算机上测试,如要进行两台计算机的通讯,只需要将两台 电脑连入一个局域网中,在两台电脑上运行程序,及自动进行连接,并自动获取 成员列表,既可以进行简单的聊天。选中在线成员列表就可以与相应用户进行聊 天,在文本框内输入消息,按发送消息,成功发送。 选中用户发送信息成功如图4.1示: 图4.1 双方发送信息成功 当没有选择用户列表中的某个用户时,选中复选框广播时,可以发送给在线 的所有用户。没有选中时,点击发送按钮则显示提示框1,输入信息框中信息为空时,点击发送信息按钮,显示提示框2。 图4.2 提示框1 图4.3 提示框2 当选中广播复选框时,则信息以广播信息发送给所有用户,及所有在线用户 都能收到该广播信息,显示如图4.5: 图4.4 广播信息 课程设计的过程是艰辛的,但是收获却是很大的。这次课程设计我主要是应 用以前学习的网络编程以及Java的一些知识,综合起来才完成了这个网络通讯的软件,虽然软件很小,实现的功能也很有限。 课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知 识有了更进一步的理解和认识。当然,我在课程设计中碰到了很多的问题,我通 过查阅相关书籍,资料,以及上网查资料,特别是得到了许多老师和同学的帮助, 还让我认识到了自己对以前所学知识的不足方面,开拓了自己的思路! 随着社会发展,internent的迅速普及,以及飞速发展,人们对实时通信的 要求越来越迫切,需求日益增加,网络聊天已经成为了一大时尚,不少人都有这 样的经历。用户数据报协议(UDP)是一个无连接协议,使用这种协议时,并不 需要在两台计算机之间建立固定的连接,也就是说,通信双方没有服务器和客户 机之分,它们之间进行的是对等通信。所以它的优势很明显。是现代通信不可或 缺的一部分。这次的课程设计我主要应用所学,通过在Java编程环境下,进行 基于UDP的网上聊天软件的设计,它易于实现两台计算机之间建立固定的连接, 这是它的一大优势。 当然,通过这次课程设计,我也发现了自身的很多不足之处,尤其是对于编 程的过程不熟悉,又加上是去年学习的Java,复习了一次基本知识,在总体规划方面花的时间过长,也不够理想,导致最后软件只实现了一些基本功能,没能 够充分发挥出软件可以实现的功能!而且界面设计也过于简单。在以后的学习中, 我会不断的完善自我,不断进取,能使自己在网络编程这方面有一个大的发展。
/
本文档为【对等模式的网络聊天室——网络聊天1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索