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:
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 .
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 .
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 .
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.
ResponderExcluirSe você puder me ajudar nessa questão, ficarei muti grato.
Desde já agradeço.
Desculpa a demora em responder Francisco, ando ocupado com o Doutorado.
ResponderExcluirBom 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