服务器端功能编写:
package test;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class BSframe {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8080); // 创建服务器套接字并指定端口号
while (true) { // 服务器保持监听状态以及时完成对请求的响应
final Socket socket = server.accept(); // 阻塞式等待客户端连接
InputStream inputStream = socket.getInputStream(); // 获取服务器端字节输入流
// 构建字节字符转换流并向其中传入字节输入流
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
// 构建缓冲字符输入流并向其中传入字节字符转换流
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
OutputStream outputStream = socket.getOutputStream(); // 获取服务器端字节输出流
String readLine = bufferedReader.readLine(); // 缓冲流读取数据
// System.out.println(readLine); // GET /web/index.html HTTP/1.1
String[] split = readLine.split(" "); // 根据请求头空格分隔字符串
String trim = split[1].trim().substring(1); // 获取请求资源路径
// System.out.println(trim); // web/index.html
// 构建文件字节输入流并根据获取的请求资源路径访问服务器资源
FileInputStream fileInputStream = new FileInputStream(trim);
if (trim.endsWith(".ico")) {
outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
outputStream.write("Content-Type:image/x-ico\r\n\r\n".getBytes());
} else if (trim.endsWith(".html")) {
outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
outputStream.write("Content-Type:text/html\r\n\r\n".getBytes());
} else if (trim.endsWith(".css")) {
outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
outputStream.write("Content-Type:text/css\r\n\r\n".getBytes());
}
byte[] buffer = new byte[1024];
int len = 0;
// 文件字节输入流依次读取资源数据
while ((len = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
outputStream.close(); // 关闭流对象释放资源
// 访问到的页面信息
// <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
// <% String path = request.getContextPath(); String basePath = request.getScheme()+
// "://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
// This is my JSP page.
}
}
}
访问测试: