靜態網頁與動態網頁網絡原理

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();
		}
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章