Objetivo
Criar um processo servidor que utiliza de sockets TCP como provido pela biblioteca socket do Python
para implementar um servi¸co que retorna a tradu¸c˜ao em inglˆes para palavras informadas em portuguˆes.
As palavras ser˜ao informadas pela aplica¸c˜ao cliente, cujo processo vocˆe tamb´em deve criar.
Instru¸c˜oes
O servidor, que ser´a chamado de TranslatorServer, deve operar da seguinte forma:
• Retornar a tradu¸c˜ao em inglˆes para uma palavra informada em portuguˆes ap´os o cliente ter se
conectado ao servidor atrav´es da instru¸c˜ao CONECTAR
• Aceitar mensagens do tipo ARMAZENAR usadas para armazenar uma nova tupla de tradu¸c˜ao
(palavra, word)
• Aceitar mensagens do tipo CONSULTAR usadas para listar as palavras que o servidor j´a conhece
a tradu¸c˜ao
• Aceitar mensagens do tipo SAIR que resulta no fechamento da sess˜ao em andamento entre cliente
e servidor
• Aceitar mensagens do tipo FINALIZAR que resulta no fechamento da sess˜ao e no encerramento do
processo servidor
Cen´ario inicial
Quando o TranslatorServer inicializar, conhecer´a inicialmente cinco palavras em portuguˆes e suas
respectivas tradu¸c˜oes. Ele deve armazenar esses dados de inicializa¸c˜ao numa estrutura de dado interna
de tamanho suficiente para armazenar esses cinco pares, permitindo acrescentar pelo menos mais dez
pares. O servidor ent˜ao espera por uma conex˜ao de um cliente a partir de uma porta de comunica¸c˜ao `a
sua escolha.
O cliente (chamado de TranslatorClient) usa das mensagens especificadas acima para enviar comandos
ao servidor. O programa cliente permitir que o usu´ario escolha entre as mensagens dispon´ıveis para
intera¸c˜ao com o servidor.
Descri¸c˜ao detalhada das mensagens
CONECTAR: Essa mensagem ´e enviada do cliente para o servidor para que seja estabelecida uma
conex˜ao entre ambos e iniciada uma sess˜ao. Ao enviar a mensagem, o cliente espera pela mensagem de
retorno do servidor via socket. Ap´os receber e mostrar a mensagem de retorno do servidor o cliente pode
iniciar o envio de outra mensagem. Ao receber uma mensagem CONECTAR do cliente, o servidor deve
retornar a string ”CONECTAR: OK”e esperar por mais instru¸c˜oes do cliente.
Solicita¸c˜oes de tradu¸c˜oes s˜ao enviadas pelo cliente atrav´es de uma string contendo a palavra que deseja
ser traduzida do portuguˆes para o inglˆes. Ao receber a palavra, o servidor deve retornar a palavra em
inglˆes correspondente, caso a palavra j´a esteja em seu banco de dados, como no exemplo a seguir:
Cliente: BOLA
Servidor: BALL
Cliente: JOGO
Servidor: N~AO POSSUO TRADUC¸~AO PARA ESSA PALAVRA
ARMAZENAR: Esta mensagem ´e enviada do cliente para o servidor a fim de registrar novas tradu¸c˜oes.
O processo se inicia enviado a mensagem ”ARMAZENAR”seguida pela palavra em portuguˆes e por
sua equivalente em inglˆes, separadas por espa¸co simples. O servidor deve responder com a mensagem
”ARMAZENAR: OK”. Exemplo:
Cliente: ARMAZENAR JOGO GAME
Servidor: ARMAZENAR: OK
Se o servidor j´a conhece a palavra armazenada, a tradu¸c˜ao correspondente deve ser substitu´ıda por
aquela enviada na mensagem ARMAZENAR.
CONSULTAR: Essa mensagem ´e enviada do cliente para o servidor e faz com que o servidor retorne
todas as palavras armazenadas em sua mem´oria. O cliente envia a string ”QUERY”e o servidor deve
responder com a lista de palavras em portuguˆes armazenadas localmente, finalizada pela mensagem
”CONSULTAR: OK”para confirmar que a opera¸c˜ao de consulta foi completada. Exemplo:
Cliente: CONSULTAR
Servidor: CACHORRO CAVALO JOGO BOLA CASA QUERY: OK
SAIR: Esta mensagem ´e enviada do cliente para o servidor avisando a este que o cliente n˜ao quer mais
continuar a sess˜ao em execu¸c˜ao (que foi inicializada pela mensagem CONECTAR). O cliente envia a
mensagem e ap´os receber a resposta do servidor (SAIR: OK) deve fechar sua conex˜ao. O servidor ap´os
receber a mensagem SAIR deve enviar a mensagem SAIR: OK e ent˜ao esperar por uma nova conex˜ao
com um novo cliente.
Exemplo:
Cliente: SAIR
Servidor: SAIR: OK
FINALIZAR: Mensagem enviada com objetivo de finalizar o servi¸co rodando no servidor. O servidor,
ao receber a mensagem FINALIZAR, responde com FINALIZAR: OK ent˜ao deve fechar todos as suas
conex˜oes em aberto e encerrar sua execu¸c˜ao. Isso far´a com que todas as palavras registradas sejam
perdidas, e se o servidor for reiniciado contar´a novamente apenas com as cinco palavras de inicializa¸c˜ao.
Exemplo:
Cliente: FINALIZAR
Servidor: FINALIZAR: OK