模拟B/S服务器
模拟B/S服务器
模拟网站服务器是,使用浏览器访问自己编写的服务端程序,查看网页效果。
案例分析
1.准备页面数据,web文件夹
复制到我们Module中,比如复制到day08中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pU5LP5S4-1604305459284)(E:\数据库\网络编程\bs服务器.png)]
2.我们模拟服务器端,ServerSocker类监听端口,使用浏览器访问
public static void main(String[]args)throws IOException{
ServerSocket server=new ServerSocket(8000);
Socket socket=server.accept();
InputStream in =socket.getInputStream();
byte[]bytes=new byte[1024];
int len=in.read(bytes);
System.out.println(new String(bytes,0,len));
socket.close();
server.close();
}
案例实现:
public class SerDemo{
public static void main(String[]args){
System.out.println(“服务端 启动,等待连接。。。。。”);
//创建ServerSocket对象
ServerSocket server=new ServerSocket(8888);
Socket socket=server.accept();
//转换流读取浏览器的请求消息
BufferedReader readWb=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String requst=readWb.readLine();
//取出请求资源的路径
String[]strArr=requst.split(" ");
//去掉web前面的/
String path=strArr[1].substring(1);
//读取客户端,请求的资源文件
FileInputStream fis=new FileInputStream(path);
byte[]bytes=new byte[1024];
int len=0;
//字节输出流,将文件写回客户端
OutputStream out=socket.getOutputStream();
//写入HTTP协议响应头,固定写法
out.writ(“HTTP/1.1 200 OK\r\n”.getBytes());
out.write(“Content-Type:text/html\r\n”.getBytes());
//必须要写入空行,否则浏览器不解析
out.write("\r\r".getBytes());
while((len=fis.read(bytes))!=-1){
out.write(bytes,0,len);
}
fis.close();
out.close();
readWb.close();
socket.closer();
server.close();
}
}