Socket - Chat

2 respostas
J

Ola…
Estou com dificuldade de fazer com que este código Cliente Servidor se comuniquem até quando o cliente clicar em cancelar…
No momento o cliente só envia uma mensagem e o servidor tbm…
Ou seja, gostaria de fazer tipo um chat ( ficar conectado até o cliente clicar em Cancelar na vez de enviar sua mensagem )

import java.io.*;   
import java.net.*;   
import javax.swing.JOptionPane;   
  
public class ServidorSimples{   
  
    public static void main ( String[] args ){   
  
        try{   
  
            ServerSocket server = new ServerSocket (7000);   
            System.out.println("Rodando...");   
                           
                        while (true){   
                           
            Socket connection = server.accept();   
           
            DataInputStream entrada = new DataInputStream  (connection.getInputStream());   
  
            DataOutputStream saida = new DataOutputStream (connection.getOutputStream());   
                           
                        String s = entrada.readUTF();   
                           
                        System.out.println("Recebi do Cliente a String: "+s);   
                           
                        saida.writeUTF("RECEBI SUA MENSAGEM CLIENTE");   
                           
                        saida.writeUTF(JOptionPane.showInputDialog("ENTRE COM A MENSAGEM PARA O CLIENTE"));   
                           
                        String h = entrada.readUTF();   
                        System.out.println(h);   
                           
                        entrada.close();   
                        saida.close();   
                           
                        connection.close();   
                           
                        server.close();}   
  
        }catch ( Exception ex ){   
  
            System.out.println("Algum problema ocorreu para criar ou receber o socket.");   
  
        }   
  
           
    }   
  
}
import java.io.*;     
import java.net.*;     
import javax.swing.JOptionPane;   
     
public class Cliente {     
     
    public static void main(String[] args) {   
           
        Socket connection = null;   
           
           
                                       
        try{     
               
            connection = new Socket ("localhost",7000);   
               
            DataInputStream entrada = new DataInputStream (connection.getInputStream());   
               
            DataOutputStream saida = new DataOutputStream (connection.getOutputStream());   
                                       
            saida.writeUTF(JOptionPane.showInputDialog("ENTRE COM A MENSAGEM PARA O SERVIDOR"));   
               
            String h = entrada.readUTF();   
               
            System.out.println(h);//MENSAGEM RECEBIDA   
               
            String s = entrada.readUTF();   
               
            saida.writeUTF("RECEBI SUA MENSAGEM SERVIDOR");   
            //String h = entrada.readUTF();   
               
            System.out.println("Recebi do Servidor a String: "+s);   
            //System.out.println(h);   
               
            entrada.close();   
            saida.close();   
               
            connection.close();   
               
        }catch(IOException e){     
                 
            System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");     
             
        }   
             
        }     
     
    }

Então pessoal gostaria mesmo se alguém pudesse ajudar a corrigir esse mesmo código que enviei… O cliente e o servidor já estão conversando… Mas gostaria de colocar no cliente um WHILE pra ficarem trocando msgs até o cliente clicar em cancelar ( nao sei se estou sendo claro )… Só que nao tenho idéia de como colocar esse WHILE no cliente ( comparando o WHILE com o que nesse código ) que se fosse no caso de uma string ficaria assim né… while ( string tal != null ) como faça isso… Que nesse exemplo meu teria que comparar com essa parte ai… mas nao sei como faço…

2 Respostas

J

j.a.t:
Ola…
Estou com dificuldade de fazer com que este código Cliente Servidor se comuniquem até quando o cliente clicar em cancelar…
No momento o cliente só envia uma mensagem e o servidor tbm…
Ou seja, gostaria de fazer tipo um chat ( ficar conectado até o cliente clicar em Cancelar na vez de enviar sua mensagem )

import java.io.*;   
import java.net.*;   
import javax.swing.JOptionPane;   
  
public class ServidorSimples{   
  
    public static void main ( String[] args ){   
  
        try{   
  
            ServerSocket server = new ServerSocket (7000);   
            System.out.println("Rodando...");   
                           
                        while (true){   
                           
            Socket connection = server.accept();   
           
            DataInputStream entrada = new DataInputStream  (connection.getInputStream());   
  
            DataOutputStream saida = new DataOutputStream (connection.getOutputStream());   
                           
                        String s = entrada.readUTF();   
                           
                        System.out.println("Recebi do Cliente a String: "+s);   
                           
                        saida.writeUTF("RECEBI SUA MENSAGEM CLIENTE");   
                           
                        saida.writeUTF(JOptionPane.showInputDialog("ENTRE COM A MENSAGEM PARA O CLIENTE"));   
                           
                        String h = entrada.readUTF();   
                        System.out.println(h);   
                           
                        entrada.close();   
                        saida.close();   
                           
                        connection.close();   
                           
                        server.close();}   
  
        }catch ( Exception ex ){   
  
            System.out.println("Algum problema ocorreu para criar ou receber o socket.");   
  
        }   
  
           
    }   
  
}
import java.io.*;     
import java.net.*;     
import javax.swing.JOptionPane;   
     
public class Cliente {     
     
    public static void main(String[] args) {   
           
        Socket connection = null;   
           
           
                                       
        try{     
               
            connection = new Socket ("localhost",7000);   
               
            DataInputStream entrada = new DataInputStream (connection.getInputStream());   
               
            DataOutputStream saida = new DataOutputStream (connection.getOutputStream());   
                                       
            saida.writeUTF(JOptionPane.showInputDialog("ENTRE COM A MENSAGEM PARA O SERVIDOR"));   
               
            String h = entrada.readUTF();   
               
            System.out.println(h);//MENSAGEM RECEBIDA   
               
            String s = entrada.readUTF();   
               
            saida.writeUTF("RECEBI SUA MENSAGEM SERVIDOR");   
            //String h = entrada.readUTF();   
               
            System.out.println("Recebi do Servidor a String: "+s);   
            //System.out.println(h);   
               
            entrada.close();   
            saida.close();   
               
            connection.close();   
               
        }catch(IOException e){     
                 
            System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");     
             
        }   
             
        }     
     
    }

Então pessoal gostaria mesmo se alguém pudesse ajudar a corrigir esse mesmo código que enviei… O cliente e o servidor já estão conversando… Mas gostaria de colocar no cliente um WHILE pra ficarem trocando msgs até o cliente clicar em cancelar ( nao sei se estou sendo claro )… Só que nao tenho idéia de como colocar esse WHILE no cliente ( comparando o WHILE com o que nesse código ) que se fosse no caso de uma string ficaria assim né… while ( string tal != null ) como faça isso… Que nesse exemplo meu teria que comparar com essa parte ai… mas nao sei como faço…

Obs: Ontem coloquei essa mesma duvida em Java Basico, mas somente hoje percebi que a parte de Socket é em Java avançado ( por isso estou colocando aqui)…

ViniGodoy

Não duplique tópicos. Você já havia postado sua dúvida aqui:

E alguns colegas de fórum já te responderam com exemplos. Ao invés de pedir para que eles modifiquem seu código, estude os exemplos, e depois poste por lá quais dúvidas você teve.

Esse tópico será trancado.

Criado 22 de agosto de 2011
Ultima resposta 22 de ago. de 2011
Respostas 2
Participantes 2