ALGUEM PODE ME AJUDAR A ENTENDER PQ MEU PROGRAMA SO CAI NA EXCEÇÃO?
[code]import java.io.;
import java.net.;
public class ClienteDeEco {
public static void main(String args[]) {
try {
// para se conectar ao servidor, cria-se objeto Socket.
// O primeiro parâmetro é o IP ou endereço da máquina que
// se quer conectar e o segundo é a porta da aplicação.
// Neste caso, usa-se o IP da máquina local (127.0.0.1)
// e a porta da aplicação ServidorDeEco (2000).
Socket conexao = new Socket("localhost", 2000);
// uma vez estabelecida a comunicação, deve-se obter os
// objetos que permitem controlar o fluxo de comunicação
BufferedReader entrada = new BufferedReader(new InputStreamReader(conexao.getInputStream()));
PrintStream saida = new PrintStream(conexao.getOutputStream());
String linha;
// objetos que permitem a leitura do teclado
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
// loop principal
while (true) {
// lê a linha do teclado
System.out.print("> ");
linha = teclado.readLine();
// envia para o servidor
saida.println(linha);
// pega o que o servidor enviou
linha = entrada.readLine();
// Verifica se é linha válida, pois se for null a conexão
// foi interrompida. Se ocorrer isso, termina a execução.
if (linha == null) {
System.out.println("Conexão encerrada!");
break;
}
// se a linha não for nula, deve-se imprimi-la no vídeo
System.out.println(linha);
}
} catch (IOException e) {
// caso ocorra alguma excessão de E/S, mostre qual foi.
System.out.println("IOException: " + e);
}
}
}[/code]
[code]import java.io.;
import java.net.;
public class ServidorDeEco {
public static void main(String args[]) {
try {
// criando um socket que fica escutando a porta 2000.
ServerSocket s = new ServerSocket(2000);
// loop principal.
while (true) {
// Aguarda alguém se conectar. A execução do servidor
// fica bloqueada na chamada do método accept da classe
// ServerSocket. Quando alguém se conectar ao servidor, o
// método desbloqueia e retorna com um objeto da classe
// Socket, que é uma porta da comunicação.
System.out.print("Esperando alguém se conectar...");
Socket conexao = s.accept();
System.out.println(" Conectou!");
// obtendo os objetos de controle do fluxo de comunicação
BufferedReader entrada = new BufferedReader(new
InputStreamReader(conexao.getInputStream()));
PrintStream saida = new
PrintStream(conexao.getOutputStream());
// esperando por alguma string do cliente até que ele
// envie uma linha em branco.
// Verificar se linha recebida não é nula.
// Isso ocorre quando conexão é interrompida pelo cliente
// Se a linha não for null(o objeto existe), podemos usar
// métodos de comparação de string(caso contrário,estaria
// tentando chamar um método de um objeto que não existe)
String linha = entrada.readLine();
while (linha != null && !(linha.trim().equals(""))) {
// envia a linha de volta.
saida.println("Eco: " + linha);
// espera por uma nova linha.
linha = entrada.readLine();
}
// se o cliente enviou linha em branco, fecha-se conexão.
conexao.close();
// e volta-se ao loop, esperando mais alguém se conectar
}
}
catch (IOException e) {
// caso ocorra alguma excessão de E/S, mostre qual foi
System.out.println("IOException: " + e);
}
}
}[/code]
NO CONSOLE APARECE ESSA MENSAGEM PARA O CLIENTE:
IOException: java.net.BindException: Address already in use: JVM_Bind
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)