================= Projeto de PLP II ================= Aluno: Cesar Henrique Kallas ra: 02099224 Engenharia de Computação - 2 ano - Puc Campinas opensrc@gmx.net - http://www.opensrc.co.nr 17/11/2003 Grupo Server: Orlando Bordoni 02135762 Guilherme Feliciano 02027936 Paulo Pereira 02072544 Cesar Henrique Kallas 02099224 Compilar ======== Server: [chk@kaka trab1]$ javac Mysql.java -d . [chk@kaka trab1]$ javac SendMessage.java -d . [chk@kaka trab1]$ javac ServerOpenChat.java -d . [chk@kaka trab1]$ javac Server.java Cliente: [chk@kaka trab1]$ javac ClientOpenChat.java -d . [chk@kaka trab1]$ javac Client.java Executar binários ================= Cliente: OpenChatClient.jar [chk@kaka trab1]$ java -jar OpenChatClient.jar Após isso, entre em opções e diga para qual ip ele vai conectar no servidor, você pode usar o "ip" opensrc.hopto.org porta 10000, pois o mesmo encontra-se rodando o servidor anexo. Registre usuário e logue. Server: OpenChatServer.jar [chk@kaka trab1]$ java -jar OpenChatServer.jar [porta servidor] [ip mysql] [porta mysql] [chk@kaka trab1]$ java -jar OpenChatServer.jar 10000 10.0.0.10 3306 Para rodar o servidor, você precisa do driver do mysql, que se encontra na pagina mysql.com: Driver utilizado: mysql-connector-java-3.0.8-stable-bin.jar Local de destino: /j2sdk1.4.2_02/jre/lib/ext/ ================ ICQ (I Seek You) Uma aplicação de ICQ consiste em um conjunto de aplicativos que juntos possibilitam à comunidade da internet estabelecer uma comunicação entre os seus participantes através de mensagens que são enviadas instantaneamente. O nosso projeto da disciplina de PLP II consiste em desenvolver um ICQ simples que nos permitirá estudar três pontos principais da programação em Java: Interface Gráfica, Sockets e Threads. Além disso, o projeto trará ao aluno um bom conhecimento sobre a tecnologia Cliente/Servidor e sobre Redes de Computadores, pontos que são de extrema importância para a sua formação. =========== Cliente ICQ O cliente ICQ permitirá a qualquer usuário da internet fazer o seu cadastro na comunidade do ICQ e entrar efetivamente em contato com outros usuários após efetuar a sua identificação. No nosso cliente ICQ, será possível ao usuário escolher inicialmente uma das duas opções abaixo: Efetuar o Registro de um usuário: Caso o cliente não seja registrado ou queira registrar um novo usuário, ele deve indicar o usuário (nick-name) e o seu e-mail. Em seguida, esses dados devem ser enviados ao servidor que verificará o registro e retornará uma resposta positiva ou negativa sobre o cadastro. Caso a resposta seja positiva, o usuário deve indicar uma senha a ser registrada para acesso ao serviço. Efetuar Login com um usuário registrado: Uma vez registrado o usuário, será possível efetuar o seu login na comunidade do ICQ. Uma vez efetuado o login, dizemos que o usuário está online e somente neste estado será possível enviar e receber mensagens. Para efetuar o login, o cliente deve fornecer o seu usuário (nick-name) e sua senha. Estes dados serão enviados ao servidor que verifica a existência do usuário e a validade da senha e permite ou não a mudança de estado para online. Uma vez online, o cliente pode efetuar uma das seguintes tarefas: Cadastrar Amigo: solicita ao servidor a inclusão de um usuário registrado na comunidade do ICQ, em uma lista de amigos particular do usuário logado. Excluir Amigo: solicita ao servidor a retirada da sua lista de amigos um determinado amigo cadastrado. Solicitar Lista de Amigos: solicita ao servidor a lista de todos os usuários cadastrados na lista de amigos do usuário logado e qual o seu status atual (online ou offline) Enviar Mensagem: solicita ao servidor a entrega de uma mensagem a um outro usuário online. Este usuário pode ou não estar na sua lista de amigos. Deve ser informado ao servidor qual o usuário que deve receber a mensagem e a mensagem em si. Solicitar Lista de Usuários OnLine: solicita ao servidor uma lista contendo todos os usuários da comunidade do ICQ que estejam online no momento. Deslogar: solicita ao servidor a sua mudança de estado para offline, perdendo assim a conexão com o servidor. Na tela principal do Cliente ICQ, deve haver um checkbox que permita ao usuário escolher a opção de lembrar o usuário. Caso esta caixa esteja selecionada, o aplicativo deve salvar em um arquivo texto o nome do último usuário utilizado pelo aplicativo e sugeri-lo no próximo login. ============ Servidor ICQ O servidor ICQ é o centralizador de serviços. Ele deve verificar as solicitações de serviços dos clientes e atende-las caso seja possível. Nenhuma solicitação de cliente deve ficar sem resposta, mesmo que negativa. Todas as informações relativas aos usuários da comunidade do ICQ são de domínio do servidor e somente ele pode manipula-las. O servidor deve estar em constante estado de espera por conexões de clientes em uma porta específica, que pode ser configurada no momento do início do funcionamento do ICQ. Caso a porta não seja indicada no início da execução do programa, ele deve assumir a porta 10.000 como porta padrão. Para cada cliente que solicitar uma conexão com o servidor, deve ser iniciada uma nova thread que cuidará de todas as solicitações do usuário. Sobrecarga de Serviços no Servidor ICQ A forma de trabalho descrita acima tem por característica a sobrecarga de serviços no servidor uma vez que é ele o centralizador das operações. Caso você queira dividir a carga de trabalho entre o servidor, desenvolva o programa de forma que, ao receber a lista de amigos, para os que estiverem online, o usuário receba também o número IP atual do amigo de forma que ele consiga efetuar a troca de mensagens diretamente com o amigo, sem precisar do servidor para conversar com os amigos cadastrados. Dados sobre a entrega Este trabalho deve ser desenvolvido INDIVIDUALMENTE utilizando a linguagem Java. A entrega do trabalho se dará no dia 10 de Novembro (até 23h59min), por e-mail para a professora (andreia@puc-campinas.edu.br). Todos os arquivos envolvidos no projeto, inclusive os fontes e o banco de dados, devem ser enviados compactados (preferencialmente no formato JAR). O nome do arquivo deve ser o seu RA. Caso você envie o trabalho e não receba uma confirmação da professora em até 48 horas, remeta o trabalho novamente encaminhando o e-mail enviado no dia 10. Nos dias 11, e 14 de Novembro serão realizadas entrevistas sobre o trabalho entregue. Caso seja necessário, os dias 18 e 21 de novembro também podem ser usados para entrevista.