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