java 从零开始,学习笔记之基础入门<网络编程_带QQ模拟功能>(二十)(六)

2014-11-24 08:29:18 · 作者: · 浏览: 14
rverSocket server =new ServerSocket(9999);
while (true) {
Socket client = server.accept();
System.out.println("----------------------");
BufferedReader br =new BufferedReader(new InputStreamReader(
client.getInputStream()));
while ((str = br.readLine()) !=null) {
//取出的str就是对应的每一行信息
//调用getFileName获取客户端请求的文件名
if (str.startsWith("GET")) {
reqfilename =getFileName(str);
// 对服务器上存放资源文件的目录进行遍历返回一个boolean型的值
File serverfile =new File("E:/workspace/jbs13NetDemo/");
//定义一个boolean型的值来判断请求的文件存在与不存在
flag = getFileExits(serverfile, reqfilename);
System.out.println(flag);
if (flag) {
content =getFileContent(reqfilename);
} else {
reqfilename ="error.html";
content =getFileContent(reqfilename);
}
}
if (str.startsWith("Connection: Keep-Alive")) {
break;
}
}
//以输出流的形式将content的内容输出去
PrintWriter pw = new PrintWriter(client.getOutputStream());
pw.println(content);
pw.flush();
pw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
//取到客户端请求的文件名
public static String getFileName(String str) {
System.out.println(str +"<><><><><><><>");
String[] strs = null;
String filename = null;
String name = null;
strs = str.split(" ");
name = strs[1]; // /main.html
filename = name.substring(1);
return filename;
}
/**
* @param file
* 服务器的文件目录
* @param filename
* 客户端请求的文件名
* @return boolean true文件存在 false文件不存在
*/
public static boolean getFileExits(File file, String filename) {
boolean flag =false;
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
//递归调用
getFileExits(files[i], filename);
} else {
if (files[i].getName().equals(filename)) {
flag = true;
}
}
}
return flag;
}
//以字节流的形式读取请求的文件,返回一个String
public static String getFileContent(String reqfilename) {
String str = null;
try {
InputStream is = new FileInputStream(reqfilename);
byte[] b =new byte[1024];
int len = 0;
while ((len = is.read(b)) != -1) {
str = new String(b).trim();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
统一资源定位符:URL完成 下载
package com.ibm.url;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class UrlDemo {
public static void main(String[] args) {
URL url = null;
try {
url = new URL("d:/a.mp3/");