Threads em webserver

0 respostas
A

Dado o código abaixo gostaria de saber se alguem poderia me ajudar a implementar threads nesse código e o que poderia ser melhorado. Pode ser? aguardo contato de vcs.

package servidor.web;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.StringTokenizer;

public class WebServer {

public static void main(String[] args) throws IOException {
	String requestMessageLine; // recebe mensagens da url(o que a pessoa digitou)
	String fileName;// arquivo a ser solicitado
	//porta a ser ouvida
	ServerSocket listenSocket = new ServerSocket(8080);
	Socket connectionSocket = listenSocket.accept(); // aceita as
														// condições do
														// listenSocket;

	// Fluxo de entrada
	BufferedReader inFromClient = new BufferedReader(new InputStreamReader(
			connectionSocket.getInputStream()));
	// Fluxo de saida
	DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
	
	requestMessageLine = inFromClient.readLine();
	
	//Quebra o que é digitado na url para testar se é get ou put
	StringTokenizer tokenizeLine = new StringTokenizer(requestMessageLine);
	//testa se é get
	if (tokenizeLine.nextToken().equals("GET")){
		fileName = tokenizeLine.nextToken();
		if (fileName.startsWith("/")){
			fileName = fileName.substring(1);
		}
		//criando o arquivo
		File file = new File(fileName);
		
		//verificando o caminho onde está o arquivo
		System.out.println(file.getAbsolutePath());
		
		//fazendo a leitura do arquivo
		FileInputStream inFile = new FileInputStream(fileName);
		//descobrindo quantos bytes tem o arquivo
		int numOfByte = (int) file.length();
		
		//criando array de bytes para o arquivos
		byte[] fileInBytes = new byte [4096];
		//joga-se no array o input stream do arquivo
		inFile.read(fileInBytes);
		//mandando o cabeçalho do documento
		outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n");
		//mandando para o html o tipo de arquivo
		if (fileName.endsWith(".gif"))
			outToClient.writeBytes("Content-Type: image/gif\r\n");
		if (fileName.endsWith(".jpg"))
			outToClient.writeBytes("Content-Type: image/jpeg\r\n");
		
		//mandando o tamanho do arquivo
		outToClient.writeBytes("Content-Length: "+ numOfByte + "\r\n");
		//quebrando linha
		outToClient.writeBytes("\r\n");
		
		//mandando o arquivo propriamente dito
		outToClient.write(fileInBytes, 0, numOfByte);
		
	}
	//se não for get imprimir msg
	else {
		System.out.println("Request desconhecido!!!");
	}
//		fechando a conexão

connectionSocket.close();

}

}
Criado 26 de dezembro de 2006
Respostas 0
Participantes 1