Pular para o conteúdo principal

Sistemas distribuidos: Enviando mensagens TCP Parte II - Servidor

Igual ao servidor UDP esse servidor só vai receber a mensagem e envia-la de volta , ou seja é um servidor de ECO mas com boa vontade basta fazer algumas alterações que vc tem um servidor de chat :-) .

Server TCP:

import java.net.*;
import java.io.*;
public class TCPServer {

    public static void main(String[] args) {
      
        try {
            int serverPort = 7896;
            ServerSocket listenSocket = new ServerSocket(serverPort);
            //socket de escuta o socket que vai atender as requisições
            
            while(true){
                Socket client = listenSocket.accept( );
                Connection c = new Connection(client);
                //precisamos criar a classe conection que vai 
               //inicializar nossas threads para atender a cada requisição
            }
        } catch (IOException e) {
            System.out.println("Listem :" + e.getMessage( ));
        } 
        
    }//fim do main
}//fim da classe



Depois de finalizado a classe servidor precisamos criar a classe adicional
Connection que vai gerar uma thread para cada cliente que solicitar conexão com o servidor .


import java.net.*;
import java.io.*;

public class Connection extends Thread {
    DataInputStream in;
    DataOutputStream out;
    Socket client;

    public Connection(Socket client) {
        
        try {
        this.client = client; 
        in = new  DataInputStream( client.getInputStream( ) );
        out = new DataOutputStream(client.getOutputStream( ) );
        this.start( );
        
        } catch (IOException e) {
            System.out.println("Connectio :" + e.getMessage( ));
        }
    }//fim do construtor
    
    
    @Override
    public void run( ){ 
        //metodo run que cria a nova thread
        //e implementa o servidor de eco
       
        try {
             String data = in.readUTF( );
             System.out.println("Dados que Chegaram:" + data);
             out.writeUTF(data);
        } catch (Exception e) {
            System.out.println("Erro: " + e.getMessage( ));
        }finally{
            try{
                    client.close( );
                }catch(IOException ex){
                    System.out.println("Close Falhou");
                }
        }
        
    }//fim do run
    
}//fim da classe


Para testar o servidor vá no menu executar e mande "Limpar e construir o projeto principal " com isso o servidor vai ser empacotado em um jar , depois basta abrir um terminar e executar o jar , em seguida abra o projeto do cliente rodando o projeto a seguir e veja as duas partes se comunicando .

Comentários

  1. João obrigado pelo material, muito bom. Gostaria de saber se tem como adicionar criptografia usando cifra de substituição ROT13, ou cifra de Vigenere. Estou com um trabalho que pede que os sockets UDP e TCP sejam criptografados. Se fosse acrescentar esses códigos de criptografia no código acima, como ficaria.
    Se você puder me ajudar nessa questão, ficarei muti grato.
    Desde já agradeço.

    ResponderExcluir
  2. Desculpa a demora em responder Francisco, ando ocupado com o Doutorado.
    Bom pelo que eu sei o Java não possui suporte (bibliotecas) para o cifrador de Vigenere, vc pode até procurar quem sabe alguem já implementou e disponibilizou o cifrador.
    Acho que vc vai ter que implementar isso na camada de aplicação, nos dois lados na aplicação local e remota. Acredito que seja relativamente tranquilo de fazer, já passei essa implementação como tarefa para alguns alunos de graduação e foi relativamente tranquilo.

    [ ]'s

    ResponderExcluir

Postar um comentário

Ajude o blog a melhorar comente!!!

Postagens mais visitadas deste blog

Video Aulas de Java já disponíveis no 4Shared

Turma segue as video aulas já disponíveis para download no 4Shared , espero que vocês gostem das aulas e por favor postem um comentario no blog dizendo o que vc's acharam preciso desse feed back para o constante aprimoramento das aulas . Basta escolher o arquivo clickar  no link para download ( tenha paciencia os arquivos são grandes ) <p>&lt;p&gt;&amp;amp;amp;amp;lt;p&amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;gt;se&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt;&lt;/p&gt;</p> Se a Janela de Download acima não funcionar tente acessar os arquivos usando o seguinte link http://www.4shared.com/dir/34812571/bf01348d/VideoAulas.html Bom estudo  :-)

Notícias da UFSC » UFSC é segunda universidade brasileira melhor colocada no Webometrics

Notícias da UFSC » UFSC é segunda universidade brasileira melhor colocada no Webometrics : A Universidade Federal de Santa Catarina passou à segunda instituição brasileira melhor qualificada no  Ranking Web of World Universities , sendo a primeira universidade federal brasileira no levantamento . No primeiro lugar geral se mantém a USP. No ranking passado, publicado no mês de janeiro, a UFSC ocupava a quarta posição. Na classificação para a América Latina, em que figurava como quinta universidade,  passou a terceira colocada. E no ranking mundial está entre as cem universidades do mundo: subiu da 129ª posição para a 98ª. Harvard University, Massachusetts Institute of Technology e Stanford University se mantêm no topoda classificação mundial. Entre as brasileiras, lideram aUniversidade de São Paulo (USP), UFSC e Universidade Estadual de Campinas (Unicamp)

Serialização de objetos I - Salvando objetos em arquivos

Serialização: como salvar seus objetos Java par utilizar quando precisar  Serialização de objetos é a possibilidade de salvar uma cópia completa de um objeto ou de uma coleção de objetos em um fluxo de saída (arquivo externo), de modo que o objeto pode ser recriado a partir da cópia serializada  quando necessário . A serialização de objetos Java,  fornece um recurso para transformar um grupo ou um único objeto em um fluxo de bits, ou um array de bytes para armazenar ou enviar pela rede,  de modo que o  referido fluxo de bits ou uma matriz de bytes pode ser transformado novamente em objetos Java. O processo de serialização também é conhecido como marshaling de um objeto, e de-serialização é conhecido como un-marshaling. Assim a serialização oferece os seguintes benefícios: Um sistema para persistência de objetos, ou seja, escrever as suas propriedades em arquivos externos ou discos, ou salvá-las em um banco de dados. Um sistema para chamadas d...