public Servidor(int porta, String endereçoBase) { try { socketDoServidor = new ServerSocket(porta, 1, InetAddress.getByName(endereçoBase)); } catch (UnknownHostException erro) { RegistroDeEventos.registrarEvento( "Erro ao iniciar o servidor. Endereço base não encontrado. Finalizando programa"); System.exit(-1); } catch (IOException e) { RegistroDeEventos.registrarEvento( "Erro ao iniciar o servidor. Houve um problema na criação do socket ou o servidor já está iniciado. Finalizando programa"); System.exit(-1); } RegistroDeEventos.registrarEvento("Servidor iniciado em " + endereçoBase + ":" + porta); aguardarRequisição(); }
private String converterFluxoDeEntradaEmTexto(InputStream arquivoDeEntrada) { String textoDeEntrada = ""; try { BufferedReader leitor = new BufferedReader(new InputStreamReader(arquivoDeEntrada), TAMANHO_DO_BUFFER); StringWriter escritor = new StringWriter(TAMANHO_DO_BUFFER); while (leitor.ready()) { escritor.write(leitor.readLine() + "\n"); escritor.flush(); } textoDeEntrada = escritor.toString(); escritor.close(); RegistroDeEventos.registrarEvento("\n" + textoDeEntrada); } catch (IOException erro) { RegistroDeEventos.registrarEvento( "Erro na conversão do fluxo de entrada para texto da requisição do cliente"); erro.printStackTrace(); } return textoDeEntrada; }
private void aguardarRequisição() { while (true) { RegistroDeEventos.registrarEvento("Aguardando requisição do cliente"); Socket socketDoCliente; InputStream arquivoDeEntrada; OutputStream arquivoDeSaída; try { socketDoCliente = socketDoServidor.accept(); RegistroDeEventos.registrarEvento( "Cliente conectado com o IP: " + socketDoCliente.getInetAddress()); arquivoDeEntrada = socketDoCliente.getInputStream(); arquivoDeSaída = socketDoCliente.getOutputStream(); processarEResponderRequisição(arquivoDeEntrada, arquivoDeSaída); fecharConexão(socketDoCliente, arquivoDeEntrada, arquivoDeSaída); RegistroDeEventos.registrarEvento("Conexão com o cliente encerrada, requisição respondida"); } catch (IOException erro) { RegistroDeEventos.registrarEvento("Erro ao processar e responder a requisição do cliete"); erro.printStackTrace(); continue; } } }