计算机网络综合实习一对一聊天

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

青岛农业大学理学与信息科学学院计算机网络综合实习报告设计题目实现一个一对一的聊天程序学生专业班级学生姓名(学号)指导教师完成时间设计地点年月日目录一.实验目的及实验环境.....................................................11.实验目的............................................................12.实验环境............................................................1二.实验内容.............................................................11.设计概要............................................................22.功能要求............................................................23.功能设计............................................................31)流程图..........................................................32)功能实现........................................................3四.测试数据及运行结果....................................................4五.实验总结.............................................................5六.主要参考文献.........................................................6七.附录(所有代码)......................................................71一.实验目的及实验环境1.实验目的《计算机网络》是一门理论性、应用性、实践性比较强的课程。学生只有通过实践,才能理解和掌握计算机网络与通信的有关基本概念、基本原理;通过实践,培养学生的实际动手能力,理论联系实际的能力,综合应用能力,从而培养学生的创新能力。《计算机网络综合实习》是学习完《计算机网络》课程后进行的一次全面的综合实习,是本专业实践性重要环节之一。本次实习从原理和实践的角度,在计算机上编程模拟实现计算机网络的基本协议,或者架设一个小型局域网并对其进行相应配置。通过本次实习,使学生对计算机网络的基本概念和基本原理有更深入的理解与掌握,同时进一步提高学生的动手能力及解决实际问题的能力。2.实验环境本软件采用Java语言编写,本程序基于java和MyEclipseJavaEnterprise开发环境,可以在一般的装有windows系统的主机上运行。而网络传输方面采用TCP/IP网络传输协议。二.实验内容实现一个一对一的聊天程序。其基本过程如下:服务器首先启动,创建套接字后等待客户的连接;客户启动以后,创建套接字,然后和服务器建立连接;连接建立后,客户机和服务器可以通过建立的套接字连接进行通信。服务器和客户端可以是一台电脑上的两个进程,也可以分别部署在两台电脑上。三.方案设计21.设计概要(1)本软件客户端与用户共用一段程序。客户端编译运行后,在窗口选择----侦听。用户编译运行后,在窗口选择----连接。(2)本软件实现的功能有:1)允许服务器侦听客户端,客户端连接到服务器2)允许服务区与客户端之间进行聊天;3)允许服务器与客户端更改背景颜色;4)允许服务器与客户端更改字体颜色;5)服务器与客户端时,会显示内容发送时间;6)允许服务器与客户端用鼠标点击“发送”,按ENTER键均可发送内容7)允许服务器与客户端用鼠标点击关闭时关闭聊天窗口2.功能要求(1)在服务器端和客户端分别创建一个套接字对象,通过输入输出流连接在一起。套接字调用close()方法关闭双方的套接字连接。(2)使用多线程处理套接字连接,把服务器端或客户端读取的数据放在一个单独的线程中去进行,防止服务器端或客户端读取数据可能引起的堵塞。服务器端收到一个客户的套接字后,应该启动一个专门为该客户服务的线程。(3)成功连接后,在图形界面中用户可以根据自己的需要进行不同的操作,如:群聊天、和某一个用户单独聊天(可加入生动的表情描述)、发送文件等。在界面中会显示用户的聊天记录。(4)登录功能.(5)客户可以通过服务器转发,实现一对一和多对多聊天.(6)实现呼叫功能.(7)客户端程序应该可以实时显示目前其它用户的状态.33.功能设计1)流程图交换程序服务器与客户利用ServerSocket和Socket来通信2)功能实现(1)Socketsocket=newSocket(Stringhost,intport);客户端创建Socket对象,host是服务器端的IP地址,port是一个端口号,该对象用于连接服务器。(2)BufferedReaderbr=newBufferedReader(newInputStreamReader(socket.getInputStream()));创建一个使用默认大小输入缓冲区的缓冲字符输入流。该输入流的指向是一个Reader流,Reader流将数据读入缓冲区,BufferedReader再从缓冲区中读取数据。InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。getInputStream()获取字节输入流。(3)PrintStreamps=newPrintStream(socket.getOutputStream());创建新的打印流,PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream永远不会抛出IOException;而是,异常情况仅设置可通过checkError方法测试的内部标志。(4)Filefile=getFile();调用getFile()函数返回一个file的的路径,提示用户输入一个路径,判断是否存在该文件,如果输入非法给予提示,重新输入。(5)ps.println(file.getName());ps.println(file.length());将文件名和大小发送到服务端。(6)Stringmsg=br.readLine();if(已存在.equals(msg)){}接收服务器发送回来的是否服务器进程ServreSocket(port)Serverocket.accept()返回SocketOutputStreamIutputStreamSocket.close()客户进程Socket(host,port)OutputStreamIutputStreamSocket.close()像操作系统注册服务等待客户连接,如果收到客户连接请求,就返回Socket对象,表示建立了与客户的链接断开连接请求与服务器连接,Socket对象创建好,表示连接成功。断开连接4存在的结果.如果文件已存在,打印提示,客户端退出.如果不存在,准备开始上传。(7)longfinishLen=Long.parseLong(msg);服务器端文件的长度。(8)FileInputStreamfis=newFileInputStream(file);创建FileInputStream从文件中读取数据,OutputStreamout=socket.getOutputStream();输出字节流,输出流接收输出字节并将这些字节写出到Socket的输出流。(9)fis.skip(finishLen);从输入流中跳过并丢弃finishLen个字节的数据,即跳过服务端已完成的大小。(10)len=fis.read(byte[]buffer));从此输入流中将最多b.length个字节的数据读入一个byte数组中。`(11)out.write(byte[]b,intoff,intlen)将指定byte数组中从偏移量off开始的len个字节写入此输出流。四.测试数据及运行结果1.对话窗口52.实验界面(JAVA)五.实验总结本次实习从选题到正式开始实习有些波折,最初因感兴趣选择了本题目,却因为个别原因没有成功选上,一番折腾之后还是拿到了这个题目。拿到题目后便开始查阅各种资料,借鉴前辈的经验之作,程序运行中确是屡屡受挫。五个做相同实验的人没有一个能够成功运行出来,后来多次操作和上网查阅之后发现问题有二,一为端口占用中,解决方法是不断修改端口,其二为运行顺序,应先运行服务端程序后运行客户端程序。对话窗口成功运行之后,觉得聊天窗口太过单调,又通过请教班里“大神”以及上网搜索、查阅书籍资料,终于能将聊天窗口设计的稍微合理和可观。不可否认的是,我们的一对一程序相对微信QQ太过简单,但是当聊天窗口出来的时候,真的是相当激动和自豪。6似乎所有的辛苦跟疲惫都烟消云散了。本次实习,使我了解到理论和实践相结合的重要性,从理论中得出结论,才能真正掌握这门技术,才能提高自己独立思考的能力,在程序设计的过程中,我可以自己解决问题。这让我真正体会到要将一门知识学的更深入,必须加强实践,多练习。六.主要参考文献1、《JavaSE程序设计》;青岛东合信息技术有限公司2、《Visual+C++网络高级编程》;人民邮电出版社3、《Windows网络与通信程序设计》;人民邮电出版社;王艳平著4、《UNIX网络编程》;RichardStevens著5、《JAVA程序设计基础》7七.附录(所有代码)1.客户端packagesrc;//声明类所在的包importjava.awt.*;//引入AWT图形开发包importjava.awt.event.*;//引入图形事件处理包importjava.io.*;//引入输入输出包importjava.net.*;//引入网络相关的包publicclassClientextendsFrame{//声明主类,继承窗体类,也就是客户端的窗体Sockets=null;//定义端口类对象s,因为很多地方要使用到,所以定义为类的属性DataOutputStreamdos=null;//定义输出流类的对象DataInputStreamdis=null;//定义输入流类的对象privatebooleanbConnected=false;//客户端是否启动标志TextFieldtfTxt=newTextField();//定义文本输入行,用来输入聊天内容TextAreataContent=newTextArea();//定义文本域,用来显示聊天记录ThreadtRecv=newThread(newRecvThread());//定义线程对对象,用来接收每个客户端publicstaticvoidmain(String[]args){//主函数,程序入口newClient().launchFrame();//创建客户端实例,并启动}publicvoidlaunchFrame(){//服务端初始化函数this.setTitle(巴卫);//设置窗口标题setLocation(400,300);//设置窗口位置this.setSize(300,300);//设置窗口大小add(tfTxt,BorderLayout.SOUTH);//把文本行加入到窗口,并设置它的位置add(taContent,BorderLayout.NORTH);8//把文本域加入到窗口pack();//把BorderLayout布局的其他模块隐藏this.addWindowListener(newWindowAdapter(){//

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功