深入理解HTTP协议的一个java的例子
来源:互联网 发布:日本能造航母吗 知乎 编辑:程序博客网 时间:2024/05/16 06:14
package org.liujl.http;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class HTTPServer {
public static void main(String [] args){
int port = 7080;
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(port);
System.out.println("服务器正在监听端口:" + port);
while(true){
try{
final Socket socket = serverSocket.accept();
System.out.println("与客户端建立链接: " + socket.getInetAddress()+ ":" + socket.getPort());
service(socket);
}catch(Exception e){
e.printStackTrace();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void service(Socket socket) throws Exception{
InputStream socketIn = socket.getInputStream();
Thread.sleep(500);
int size = socketIn.available();
byte [] buffer = new byte[size];
socketIn.read(buffer);
String request = new String(buffer);
System.out.println(request);
String firstLineOfRequest = request.substring(0,request.indexOf("/r/n"));
String [] parts = firstLineOfRequest.split(" ");
String uri = parts[1];
String contentType;
if(uri.indexOf("html") != -1 || uri.indexOf("htm") != -1 || uri.indexOf("txt") != -1){
contentType = "text/html";
}else if(uri.indexOf("jpg") != -1 || uri.indexOf("jpeg") != -1){
contentType = "image/jpeg";
}else if(uri.indexOf("gif") != -1){
contentType = "image/gif";
}else{
contentType = "application/octet-stream";
}
String responseFirstLine = "HTTP/1.1 200 OK/r/n";
String responseHeader = "Content-Type:"+contentType+"/r/n/r/n";
OutputStream socketOut = socket.getOutputStream();
socketOut.write(responseFirstLine.getBytes());
socketOut.write(responseHeader.getBytes());
int len = 0;
buffer = new byte[128];
//InputStream in = new FileInputStream("d:/temp/testdata.txt");
String localPath = uri.substring(1);
InputStream in = HTTPServer.class.getResourceAsStream(localPath);
while((len=in.read(buffer)) != -1){
System.out.println(buffer);
socketOut.write(buffer,0,len);
}
Thread.sleep(1000);
socket.close();
}
}
说明: 运行该程序,如果在和该类相同的路径存在index.html的话,则请求 http://127.0.0.1:7080/index.html 则可以获得该文件的内容,并且显示在页面上。呵呵。
- 深入理解HTTP协议的一个java的例子
- Http协议的深入理解
- 一个深入理解JAVA传统线程对象创建的例子
- 通过一个Socket例子理解Http协议
- 通过一个Socket例子理解Http协议
- 深入理解JAVA的几个例子
- 深入理解HTTP协议
- 深入理解HTTP协议
- 深入理解HTTP协议
- 深入理解http协议
- 深入理解HTTP协议
- 深入理解HTTP协议
- 深入理解HTTP协议
- 深入理解HTTP协议
- 深入理解HTTP协议
- 深入理解http协议
- 深入理解HTTP协议
- 深入理解HTTP协议
- C#创建隐藏文件
- 一个记录客户端session ip的触发器
- oracle 初步
- PowerBuilder中串行通信编程技术研究
- Flex 在运行时如何读取配置文件
- 深入理解HTTP协议的一个java的例子
- Windows环境中Kill掉Oracle线程(orakill)
- 关于WM6.1的GPRS断开方法
- asp.net 的派车
- 使Datawindow每页打印固定行
- IRQ 关于中断请求
- ORA-00600: internal error code, arguments: [opixrb-4], [1036],
- 《计算机病毒及其防范技术》教材资源更新
- StringUtils用法