java简单聊天程序实验报告及代码.doc_第1页
java简单聊天程序实验报告及代码.doc_第2页
java简单聊天程序实验报告及代码.doc_第3页
java简单聊天程序实验报告及代码.doc_第4页
java简单聊天程序实验报告及代码.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

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

文档简介

一、实验内容实验题目:1、使用URL访问用户指定网站,获取该网页的HTML代码显示给用户,并能保存至指定文件中。2、使用ServerSockt,Socket对象实现两个用户之间的端到端聊天。要求:采用UI界面设计,界面友好。二、实验过程(这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据什么知识点以及使用方法进行实验以及实验步骤。不要简单照抄实习指导,更不可写一大堆源代码)题目1、1、分析题目,了解URL类及其方法。2、设计一个模拟浏览器界面,有一个文本框,文本区域,一个搜索按钮,一个保存按钮。3、在搜索事件里面写获取HTML的代码,在保存你面写将内容保存至文件中。题目2、1、 分析题目,了解import .*,包下用到的一些类,比如URL, Socket和ServerSocket,以及这些类的方法,根据要实现的功能,进行调用。了解端到端的通讯,以及怎样建立连接。2、 设计界面:服务器界面,客户端界面。3、 写出对内容的读写代码,注意哪部分功能,在什么时候实现,应该写在哪部分。以及怎样通信:如图三、实验结果(应先列出测试数据,要写明实验的现象,实验数据的处理等。对于实验结果的表述,一般有三种方法:文字叙述(根据实验目的将实验结果系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系),图表(用表格或坐标图的方式使实验结果突出、清晰,便于相互比较,尤其适合于分组较多,且各组观察指标一致的实验,使组间异同一目了然;每一图表应有表目和计量单位,应说明一定的中心问题),屏幕截图(实验结果也可以是屏幕截图,充分表明实验的实际情况)。在实验报告中,可任选其中一种或几种方法并用,以获得最佳效果。)题目一、界面与结果截图:题目2、服务器端截屏:客户端截屏:四、讨论与分析(这是实验报告的主要部分。根据相关的知识点以及编程规范和经验对所得到的实验结果进行解释和分析。如果所得到的实验结果和预期的结果一致,那么它可以验证什么知识点,可以验证语言的什么使用方法?实验结果有什么意义?说明了什么问题?这些是实验报告应该讨论的;如果所得到的实验结果和预期的结果不相符,那么误差在什么地方,是什么原因造成的,准备怎么改进;如果实验根本就进行不下去,那么原因在什么地方。不要简单地复述课本上的理论而缺乏自己主动思考的内容。)1、 了解了URL类的应用和方法,比如通过openStream()方法打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream,将读入的内容显示到文本域,保存按钮实现的功能和记事本的另存功能一样,这里就不再叙述。2、 在写实现端到端的聊天的过程中遇到很多问题:刚开始把所有的代码都写到发送按钮里,造成很多错误,而在经过老师的分析过后,才清楚了serversocket和socket的通信是怎样建立起来的,如下图,是服务器端和客户端建立通信的过程:后来重写的时候就把循环读的代码写在界面的一个构造函数里面,结果造成,界面不能显示,后来经过仔细分析代码之后,了解了APPLICATION自身生成的方法之后,才知道程序停留在循环读取那里,之后的代码都不能执行。应该把读取操作写在界面显示之后。3、 在服务器和客户的定义那里 frame.ss = new ServerSocket(6240)和 frame.s = new Socket(, 6240)其中port部分应该是两个一致,来建立连接。但是如果在我的代码里面把其中的6240改成6000就不能进行通信。所以就很疑问,不是两个定义的端口号一样就可以进行通信的吗?为什么有些值就不行?五、附录:关键代码(给出适当注释,可读性高)客户端:在Frame类中定义变量: Socket s; OutputStream os; InputStream is;1、将以下代码写在界面可见后面,即进行循环的读操作。try frame.s = new Socket(, 6240); frame.os = frame.s.getOutputStream(); frame.is = frame.s.getInputStream(); while (true) byte buf = new byte100; int len = 0; try len = frame.is.read(buf); frame.txt2.append(Server say: + new String(buf, 0, len) + n); catch (IOException ex1) catch (Exception ex) 2、 发送按钮实现以下代码 public void send_actionPerformed(ActionEvent e) try os.write(txt1.getText().getBytes(); txt2.append(I say: + txt1.getText() + n); catch (Exception ex) txt1.setText(); 即进行写操作。将文本框的内容写出去。服务器端:在Frame类中定义变量: ServerSocket ss;Socket s; OutputStream os; InputStream is;1、将以下代码写在界面可见后面,即进行循环的读操作。 try frame.ss = new ServerSocket(6240); frame.s = frame.ss.accept(); frame.txt2.append(已和客户端建立连接可以通信n); frame.os = frame.s.getOutputStream(); frame.is = frame.s.getInputStream(); while (true) byte buf = new byte100; int len = 0; len = frame.is.read(buf); frame.txt2.append(Client say: + new String(buf, 0, len) + n); 2、发送按钮实现以下代码 public void send_actionPerformed(ActionEvent e)

温馨提示

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

评论

0/150

提交评论