package cn.jzy.http;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import java.util.Random;
import javax.imageio.ImageIO;
public class HttpServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(80);
while (true) {
Socket socket = server.accept();
BufferedInputStream bis = new BufferedInputStream(
socket.getInputStream());
byte[] buf = new byte[1024];
int c = bis.read(buf, 0, buf.length);
String resultHeader = new String(buf, 0, c).trim();
System.out.println("文件頭:"+resultHeader);
String[] s1 = resultHeader.split(" ");
String res = s1[1];
String rootPath = "d:/http";
File f = new File(rootPath + res);
// 靜態網頁原理
if (f.exists()) {
FileInputStream fis = new FileInputStream(f);
long length = f.length();
String header = "HTTP/1.1 200 OK\r\n";
header += "Server: PzhuServer/1.1\r\n";
header += "sockettent-Type: text/html\r\n";
header += "sockettent-Length: " + length + "\r\n";
header += "socketnection: close\r\n";
header += "\r\n";
byte[] buf2 = new byte[2];
int c2 = 0;
while ((c2 = fis.read(buf2, 0, buf2.length)) != -1) {
socket.getOutputStream().write(buf2, 0, c2);
}
socket.getOutputStream().flush();
socket.getOutputStream().close();
socket.close();
//動態網頁原理
} else if (res.endsWith(".javaweb")) {
String datatime = new Date().toString();
int length = datatime.getBytes().length;
System.out.println("length:" + length);
String header = "HTTP/1.1 200 OK\r\n";
header += "Server: PzhuServer/1.1\r\n";
header += "sockettent-Type: text/html\r\n";
header += "sockettent-Length: " + length + "\r\n";
header += "socketnection: close\r\n";
header += "\r\n";
socket.getOutputStream().write(header.getBytes());
socket.getOutputStream().write(datatime.getBytes());
socket.getOutputStream().flush();
socket.getOutputStream().close();
socket.close();
//加載圖片
}else if(res.endsWith(".javaimg")){
BufferedImage bimg=new BufferedImage(400, 300, BufferedImage.TYPE_INT_RGB);
Graphics g=bimg.getGraphics();
Random random=new Random();
g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));
g.fillOval(0, 0, 400, 300);
String header="HTTP/1.1 200 OK\r\n";
header+="Server: PzhuServer/1.1\r\n";
header+="Content-Type: image/jpeg\r\n";
//header+="Content-Length: "+length+"\r\n";
header+="Connection: close\r\n";
header+="\r\n";
socket.getOutputStream().write(header.getBytes());
ImageIO.write(bimg, "JPEG", socket.getOutputStream());
socket.getOutputStream().flush();
socket.getOutputStream().close();
socket.close();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
靜態網頁與動態網頁網絡原理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.