Duvida com sockets

3 respostas
A

Bom galera … Meu nome e Andre. e eu estou no 6 periodo de sistemas de informaçao…
esto estudando atualmente desenvolvimento cliente servidor, e quero criar um chat usando sockets
eu criei um servidor e criei um cliente mas so o cliente que ta recebendo mensagem… servidor nao recebe.
gostaria de saber se tem alguem que possa me mostrar a onde eu estou errando…

aqui vai o codigo do servidor :

package servidor;

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;


public class Servidor {

   
    public static void main(String[] args) throws IOException {
        
                
        ServerSocket servidor=new ServerSocket(5555);
        System.out.println("Conexao com a porta 5555 iniciada");
        
        Socket Cliente= servidor.accept();
        System.out.println("iniciada conexao com cliente  ip:"+Cliente.getInetAddress().getHostAddress());
        
                        
        //Servidor  recebe dados do cliente e mostra na tela
        Scanner txtrecebe=new Scanner(Cliente.getInputStream());
        while (txtrecebe.hasNextLine()){
            System.out.println(txtrecebe.nextLine());
        }
        
      //envia 
        Scanner txtservidor=new Scanner(System.in);
        PrintStream saidadedados =new PrintStream(Cliente.getOutputStream());
        while (txtservidor.hasNextLine()){
            saidadedados.println(txtservidor.nextLine());
         
        }
      
       txtrecebe.close();
       txtservidor.close();
       saidadedados.close();
       servidor.close();
   
}
}

Aqui o codigo do cliente :

package cliente;

import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;


public class Cliente {

   
    public static void main(String[] args)throws UnknownHostException,IOException {
        
        
        Socket Cliente=new Socket("201.30.112.93",5555);
        System.out.println("Cliente  se conectou ao meu servidor");
        
                
        //envia os dados para servidor
        Scanner txtEnvia=new Scanner(System.in);
        PrintStream saidadedados =new PrintStream(Cliente.getOutputStream());
        while (txtEnvia.hasNextLine()){
            saidadedados.println(txtEnvia.nextLine());
     
        }
        //Cliente  recebe dados do servidor
       Scanner txtrecebe=new Scanner(Cliente.getInputStream());
       while (txtrecebe.hasNextLine()){
       System.out.println(txtrecebe.nextLine());
       }   

      saidadedados.close(); 
      txtEnvia.close();
      txtrecebe.close();  
      Cliente.close();
    
 
     
}
}

Agradeço pela atençao desde ja … e peço desculpa por erros toscos se ouver…
afinal sou novo em java… e estou muito otimista em aprender essa lingagem.

3 Respostas

rmendes08

O problema é que quando o servidor aceita a conexão e prossegue para a leitura os dados ainda não chegaram, daí, como não não há linhas para receber ele prossegue para o envio. Tente usar um BufferedInputStream para fazer a leitura, pois caso não há dados para a leitura ele bloqueia a thread.

A

no caso eu uso BufferedInputStream no lugar de Scanner?

ViniGodoy

Movido para o fórum de java avançado. Por favor, leia atentamente a descrição dos fóruns antes de postar.

Para criar um chat, você deve primeiro definir um protocolo de comunicação:

Depois, você escreve o programa de chat em si.

Aqui tem um exemplo de chat extremamente simples implementado:

Criado 22 de maio de 2011
Ultima resposta 23 de mai. de 2011
Respostas 3
Participantes 3