Olá pessoal, estou criando meu primeito servidor HTTP o qual segue abaixo o esqueleto dele. Agora estou precisando fazer com que o servidor receba o pedido e não estou sabendo como fazer. Sei que eu teria de usar o BufferedReader, mas nao to sabendo como usar. Tipo,sei que teria de ser o nome do arquivo requisitado, mas eu pego isso de onde?
Desde já fico agradecido e to muito ansioso pra aprender isso. Vlw.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor {
public static void main(String[] args) {
try {
// cria um socket e associa a porta 9999
ServerSocket serversocket = new ServerSocket(9999);
while (true) {
System.out.println("Servidor em execução... \nAguardando conexão...");
Socket socket = serversocket.accept(); // aguarda conexao do cliente
// para o recebimento e envio de msg atraves do socket
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
byte[] requisicao = new byte[100];
in.read(requisicao); // recebe uma msg de requisicao do cliente
String msgReq = new String(requisicao);
System.out.println("Mensagem recebida: " + msgReq);
// identificar o recurso solicitado (quebrar a msg de requisicao
// para descobrir o recurso (pagina HTML)
try {
// declara a variavel para ler dados do arquivo
BufferedReader bufferLeitura;
// abre o arquivo para leitura
bufferLeitura = new BufferedReader (new FileReader(requisicao));
System.out.println("Arquivo foi aberto para leitura!");
// obtem a primeira linha do arquivo
String linhaLida = bufferLeitura.readLine();
// enquanto a linha do arquivo nao for vazia
while (linhaLida != null) {
String campos[] = linhaLida.split(";");
// split divide a string (linhaLida) de acordo com o separador ";"
// e obtem o nome, idade e salario e os armazena no vetor campos:
// campos[0] contera o nome, campos[1] contera a idade, campos[2]
// contera o salario
System.out.println ("Nome: " + campos[0]);
System.out.println ("Idade: " + campos[1]);
System.out.println ("Salario: " + campos[2]);
// le a proxima linha
linhaLida = bufferLeitura.readLine();
}
bufferLeitura.close();
System.out.println ("Dados lidos. O arquivo foi fechado.");
} catch (IOException e) {
// em caso de erro
System.out.println ("Ocorreu um erro durante a abertura ou leitura do arquivo! " + e.getMessage());
}
// criar a resposta HTTP (construir o header e o corpo da msg de
// resposta) -chamar o metodo geraRespostaHTTP
// envia a resposta ao cliente
// fechando a conexão com o cliente
socket.close();
}
} catch (Exception err) {
System.err.println(err);
}
}
public static String geraRespostaHTTP(String recurso) {
StringBuilder resposta = new StringBuilder();
// Criando o header, a primeira linha deve devolver o codigo 200 OK
resposta.append("HTTP/1.1 200 OK").append("\n");
resposta.append("Server: Test Server").append("\n");
resposta.append("Connection: Close").append("\n");
resposta.append("Content-Type: text/html; charset=ISO-8859-1").append("\n");
resposta.append("\n");
// fazer aqui a leitura do arquivo html de acordo com o recurso solicitado (nome
// do arquivo HTML) concatenando o todo o conteudo do arquivo no corpo da msg de
// resposta (objeto resposta)
return resposta.toString();
}
}