
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {

    /**
     * @param args
     */
    static ServerSocket serversocket;
    static Socket client_socket;
    static Conexao c;
    static String msg;

    public Servidor() {
        try {
            serversocket = new ServerSocket(9600, 5);
            System.out.println("Criei o Server Socket");

        } catch (Exception e) {
            System.out.println("Nao criei o server socket...");
        }
    }

    @SuppressWarnings("static-access")
    public static void main(String args[]) {
        String texto, linha, resposta;
        int i;
        boolean saida = false;
        LeituraTxt st = null;

        // inicializa o banco central
        new Servidor();
        // cria um objeto para o send e o recv
        c = new Conexao();


        // abre arquivo para capturar dados


        // inicializa a estrutura de armazenamento dos bancos
        i = 0;
        while (i < 10) {
            if (connect()) {

                // st = new LeituraTxt();
                //	st.open("dicionario.txt", 0);

                msg = c.receive(client_socket);
                System.out.println(msg + " : " + msg.length());

                while (msg.compareTo("$") != 0) {
                    st = new LeituraTxt();

                    st.open("dicionario.txt", 0);
                    linha = null;

                    // leitura do arquivo
                    saida = false;
                    while (((linha = st.read()) != null) && (saida == false)) {
                        //	System.out.println(" : "+linha.length());
                        
                        if (linha.compareTo(msg) == 0) // encontrei a palavra
                        {
                            linha = st.read();
                            c.send(client_socket, linha);
                            saida = true;
                            System.out.println("Entrei aqui");
                        }

                    }

                    if (linha == null) // a palavra nao existe no dicionario
                    {
                        c.send(client_socket, "#"); // # indica que a palavra nao existe
                    }
                    st.close();

                    msg = c.receive(client_socket);
                }
                // quero fechar a conexao
                try {
                    client_socket.close();
                } catch (Exception e) {
                    System.out.println("N�o desconectei...");
                }

                i++;


            } // fecha o if do connect

        } // fecha o while true

        try {
            serversocket.close();
        } catch (Exception e) {
            System.out.println("N�o desconectei...");
        }
    }

    static boolean connect() {
        boolean ret;
        try {
            client_socket = serversocket.accept();
            System.out.println("Porta: " + client_socket.getLocalPort() + " " + client_socket.getPort());
            ret = true;
        } catch (Exception e) {
            System.out.println("Erro de connect..." + e.getMessage());
            ret = false;
        }
        return ret;
    }
}
