java查询服务器文件慢,如何优化这个Web服务器我用Java只用于渲染JPEG文件?这是极慢的...

当我在这个网络服务器上使用一个jpeg图像时,它非常缓慢地在浏览器中显示图片。但是,当我打开使用Apache Web服务器时,它的速度超快。

我的代码中如何渲染jpeg文件非常慢?以下是我正在使用的代码:

server.java:

package www;

import java.io.*;

import java.net.InetAddress;

import java.net.ServerSocket;

import java.net.Socket;

public class server extends Thread

{

public server(int listen_port, webserver_starter to_send_message_to)

{

message_to = to_send_message_to;

port = listen_port;

this.start();

}

private void s(String s2)

{

message_to.send_message_to_window(s2);

}

private webserver_starter message_to;

private int port;

public void run()

{

ServerSocket serversocket = null;

s("The httpserver v. 0000000000\n\n");

try {

s("Trying to bind to localhost on port " + Integer.toString(port) + "...");

serversocket = new ServerSocket(port);

}catch (Exception e) {

s("\nFatal Error:" + e.getMessage());

System.exit(0);

return;

}

s("OK!\n");

while (true)

{

s("\nReady, Waiting for requests...\n");

try {

Socket connectionsocket = serversocket.accept();

InetAddress client = connectionsocket.getInetAddress();

s(client.getHostName() + " connected to server.\n");

BufferedReader input =

new BufferedReader(new InputStreamReader(connectionsocket.

getInputStream()));

DataOutputStream output =

new DataOutputStream(connectionsocket.getOutputStream());

http_handler(input, output);

} catch (Exception e) {

s("\nError:" + e.getMessage());

}

}

}

private void http_handler(BufferedReader input, DataOutputStream output)

{

int method = 0; //1 get, 2 head, 0 not supported

String http = new String(); //a bunch of strings to hold

String path = new String(); //the various things, what http v, what path,

String file = new String(); //what file

String user_agent = new String(); //what user_agent

try {

String tmp = input.readLine(); //read from the stream

String tmp2 = new String(tmp);

tmp.toUpperCase(); //convert it to uppercase

if (tmp.startsWith("GET")) { //compare it is it GET

method = 1;

} //if we set it to method 1

if (tmp.startsWith("HEAD")) { //same here is it HEAD

method = 2;

} //set method to 2

if (method == 0) {

try {

output.writeBytes(construct_http_header(501, 0));

output.close();

return;

}

catch (Exception e3) {

s("error:" + e3.getMessage());

}

}

int start = 0;

int end = 0;

for (int a = 0; a < tmp2.length(); a++) {

if (tmp2.charAt(a) == ' ' && start != 0) {

end = a;

break;

}

if (tmp2.charAt(a) == ' ' && start == 0) {

start = a;

}

}

path = tmp2.substring(start + 2, end);

}

catch (Exception e) {

s("errorr" + e.getMessage());

}

s("\nClient requested:" + new File(path).getAbsolutePath() + "\n");

FileInputStream requestedfile = null;

try {

requestedfile = new FileInputStream(path);

}

catch (Exception e) {

try {

output.writeBytes(construct_http_header(404, 0));

output.close();

}

catch (Exception e2) {}

;

s("error" + e.getMessage());

}

try {

int type_is = 0;

if (path.endsWith(".zip"))

{

type_is = 3;

}

if (path.endsWith(".jpg") || path.endsWith(".jpeg"))

{

type_is = 1;

}

if (path.endsWith(".gif"))

{

type_is = 2;

}

output.writeBytes(construct_http_header(200, 5));

if (method == 1)

{

while (true)

{

int b = requestedfile.read();

if (b == -1) {

break; //end of file

}

output.write(b);

}

}

output.close();

requestedfile.close();

}

catch (Exception e) {}

}

private String construct_http_header(int return_code, int file_type)

{

String s = "HTTP/1.0 ";

switch (return_code)

{

case 200:

s = s + "200 OK";

break;

case 400:

s = s + "400 Bad Request";

break;

case 403:

s = s + "403 Forbidden";

break;

case 404:

s = s + "404 Not Found";

break;

case 500:

s = s + "500 Internal Server Error";

break;

case 501:

s = s + "501 Not Implemented";

break;

}

s = s + "\r\n";

s = s + "Connection: close\r\n";

s = s + "Server: SimpleHTTPtutorial v0\r\n";

switch (file_type) {

case 0:

break;

case 1:

s = s + "Content-Type: image/jpeg\r\n";

break;

case 2:

s = s + "Content-Type: image/gif\r\n";

case 3:

s = s + "Content-Type: application/x-zip-compressed\r\n";

default:

//s = s + "Content-Type: text/html\r\n";

s = s + "Content-Type: image/jpeg\r\n";

break;

}

s = s + "\r\n";

return s;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值