java实验5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象原理与Java实践课程实验报告
实验5:网络编程
姓名:_ 班级:计算机12-2班_学号:_ 成绩:__
一、实验目的:
●掌握通过URL类获得指定网络资源内容和文件属性
●理解流在获得文件内容中的作用
●掌握进行Socket通信的程序设计办法
●掌握GUI编程
二、实验要求:
●熟悉用URL访问网络资源的方法和Socket通信原理
●掌握基本流类的使用方法
●掌握文件操作的基本方法
三、实验内容:
1、指定不同协议的URL地址,获得资源文件的内容和属性
2、实现“聊天室”程序,除具备基本的发送与接收信息功能之外,增加以下功能:
(1)增加上线功能。离线后,将【离线】按钮变成【上线】按钮,单击可再次申请建立连接。
(2)将文本区中对方和己方的字符串以不同的字体区别显示。
(3)发送带格式的字符串。
(4)增加复制功能,将文本区中的若干选中字符串复制到文本行中。
(5)增加若干图标作为表情,发送表情图标。
(6)增加对方信息到达时的语音提示。
(7)将聊天记录存储到文件中。
四、设计思路:
1、指定不同协议的URL地址,获得资源文件的内容和属性
(1)通过URL将网上资源文件的信息,并保全到“my.java”文件;
(2)通过FileReader和BufferedReader读取文件中的内容;
(3)通过getPath()读取文件路径;canRead()判断文件是否可读;canWrite()判断文件是否可写入;getName()获取文件名;length()读取文件长度;
2、“聊天室”程序
(1)服务端使用了线程池,当accept()监听到用户使用服务端,就给用户创建一个线程。
(2)客户端中包含有ChatClient()构造函数实现客户端的图形界面;saveFile()保存用户的聊天记录;readRecord()浏览该用户聊天记录;offline()实现用户的离线功能;online()实现用户的上线功能;shutdown()实现用户退出聊天室的功能;connect()实现客户端与服务端的连接;用Toolkit中的beep()实现信息到达时的语音提示。
五、程序源代码:
1、指定不同协议的URL地址,获得资源文件的内容和属性的程序代码:
//获得从网络上文件URLDemo
package url;
import java.io.*;
import .*;
public class URLDemo {
public static void main(String args[]) {
try {
FileOutputStream fos = new FileOutputStream("my.java");
URL url = new URL("/file/d66fd837611f18f62316a27cb63b6ef0?fid=2537402017-250528-817533712490310&time=1403405528&sign=FDTAXER-DCb740ccc5511e5e8fedcff06b081203-4Z14VM1c55n5l68j3heqOAt2it8%3D&to=nb&fm=N,B,T,ny&newver=1&expires=1403406128& rt=sh&r=444416615&logid=1610665282&sh=1&vuk=2537402017&fn=URL.txt");
InputStream is = url.openStream();
int i = is.read();
while(i !=-1) {
fos.write((byte)i);
i = is.read();
}
fos.flush();
fos.close();
is.close();
SplitFile spf =new SplitFile();
spf.splitFile();
FilePropertyDemo fpd =new FilePropertyDemo();
fpd.FileProperty();
} catch (IOException e) {
}
}
}
//取得文件中的内容SplitFile
package url;
import java.io.*;
public class SplitFile {
public void splitFile() {
try{
String st=null;
FileReader fr=new FileReader("my.java");
BufferedReader bfr=new BufferedReader(fr);
System.out.println("资源文件的内容:");
while(bfr.ready()){
st=bfr.readLine();
String[] str=st.split(";");
for (int i=0;i System.out.println(str[i]); } bfr.close(); fr.close(); } catch(IOException e){ System.out.println(e); } } } //取得文件属性FilePropertyDemo package url; import java.io.*; public class FilePropertyDemo{ public void FileProperty() { File aFile=new File( "C:/workspace/test/my.java"); System.out.println("文件的属性:"); System.out.println( //文件绝对路径 "文件绝对路径: "+aFile.getAbsolutePath()+ //是否可读 "\n 是否可读: "+aFile.canRead()+ //是否可写 "\n 是否可写: "+aFile.canWrite()+ //文件名 "\n 文件名: "+aFile.getName()+ //文件所在上级目录 "\n 文件上级目录: "+aFile.getParent()+ //文件所在目录(包括文件名) "\n 文件所在目录(含文件名): "+aFile.getPath()+