Comunicação cliente/servidor
Estou tentando fazer um programa (que calcule a idade e informe se a pessoa é maior ou menor de idade) se comunicando com o servidor. Tenho esse código que pede a data de nascimento, calcula a idade e diz se a pessoa é maior ou menor de idade, mas não estou conseguindo fazer a comunicação com o servidor. Alguém poderia me dar uma ajudinha?
Cliente
import static javax.swing.JOptionPane.*;
import java.net.*;
import java.io.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Cliente {
public static void main(String[] args) {
//pega os dados
Calendar cal = GregorianCalendar.getInstance();
int anoAtual = cal.get(Calendar.YEAR);
int diaNasc = 0;
int mesNasc = 0;
int anoNasc = 0;
String amostrar = "";
boolean verificar = true;
boolean verificar2 = true;
boolean verificar3 = true;
while(verificar){
diaNasc = Integer.parseInt(showInputDialog("Digite o dia"));
if (diaNasc<1 || diaNasc>31){
showMessageDialog(null,"Entrada inválida, tente novamente");
verificar = true;
}
else{
verificar = false;
}
}
while(verificar2 == true){
mesNasc = Integer.parseInt(showInputDialog("Digite o mes"));
if (mesNasc<1 || mesNasc>12){
showMessageDialog(null,"Entrada invalida, tente novamente");
verificar2 = true;
}
else{
verificar2 = false;
}
}
while(verificar3 == true){
anoNasc = Integer.parseInt(showInputDialog("Digite o ano"));
if (anoNasc<1 || anoNasc>anoAtual){
showMessageDialog(null,"Entrada invalida, tente novamente");
verificar3 = true;
}
else{
verificar3 = false;
}
}
//se conecta com o servidor
try{
Socket conectar = new Socket("127.0.0.1",5000);
//manda dados para o servidor
PrintWriter mandar = new PrintWriter(conectar.getOutputStream());
mandar.println(diaNasc);
mandar.println(mesNasc);
mandar.println(anoNasc);
mandar.flush();
//recebe os dados do servidor
InputStreamReader receber = new InputStreamReader(conectar.getInputStream());
BufferedReader ler = new BufferedReader(receber);
amostrar+=ler.readLine() +"\n";
amostrar+=ler.readLine();
showMessageDialog(null,amostrar,"",PLAIN_MESSAGE);
}
catch(Exception e){
System.out.println(e);
}
}
}
Servidor
import java.io.*;
import java.net.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Servidor {
public static void main(String[] args) {
//calendario
Calendar cal = GregorianCalendar.getInstance();
int anoAtual = cal.get(Calendar.YEAR);
int mesAtual = cal.get(Calendar.MONTH);
int diaAtual = cal.get (Calendar.DAY_OF_MONTH);
String texto = "";
//cria o servidor
try{
ServerSocket servidor = new ServerSocket(5000);
while(true){
Socket conectar = servidor.accept();//espera o cliente se conectar
InputStreamReader pegarvalores = new InputStreamReader(conectar.getInputStream());
BufferedReader ler = new BufferedReader(pegarvalores);
int diaNasc = Integer.parseInt(ler.readLine().toString());
int mesNasc = Integer.parseInt(ler.readLine().toString());
int anoNasc = Integer.parseInt(ler.readLine().toString());
//lógica
int idade = (anoAtual - anoNasc);
if((mesAtual<mesNasc) && (diaAtual<diaNasc))
idade--;
if(idade<18){
texto = "voce tem: " + idade + " anos.\nMenor de idade";
}
else{
texto = "voce tem: " + idade + " anos.\nMaior de idade";
}
//manda os dados para o cliente
PrintWriter mandar = new PrintWriter(conectar.getOutputStream());
mandar.println(texto);
mandar.flush();
}
}
catch(Exception e){
System.out.println("Erro no servidor: " + e);
}
}
}
Cliente
import static javax.swing.JOptionPane.*;
import java.net.*;
import java.io.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Cliente {
public static void main(String[] args) {
//pega os dados
Calendar cal = GregorianCalendar.getInstance();
int anoAtual = cal.get(Calendar.YEAR);
int diaNasc = 0;
int mesNasc = 0;
int anoNasc = 0;
String amostrar = "";
boolean verificar = true;
boolean verificar2 = true;
boolean verificar3 = true;
while(verificar){
diaNasc = Integer.parseInt(showInputDialog("Digite o dia"));
if (diaNasc<1 || diaNasc>31){
showMessageDialog(null,"Entrada inválida, tente novamente");
verificar = true;
}
else{
verificar = false;
}
}
while(verificar2 == true){
mesNasc = Integer.parseInt(showInputDialog("Digite o mes"));
if (mesNasc<1 || mesNasc>12){
showMessageDialog(null,"Entrada invalida, tente novamente");
verificar2 = true;
}
else{
verificar2 = false;
}
}
while(verificar3 == true){
anoNasc = Integer.parseInt(showInputDialog("Digite o ano"));
if (anoNasc<1 || anoNasc>anoAtual){
showMessageDialog(null,"Entrada invalida, tente novamente");
verificar3 = true;
}
else{
verificar3 = false;
}
}
//se conecta com o servidor
try{
Socket conectar = new Socket("127.0.0.1",5000);
//manda dados para o servidor
PrintWriter mandar = new PrintWriter(conectar.getOutputStream());
mandar.println(diaNasc);
mandar.println(mesNasc);
mandar.println(anoNasc);
mandar.flush();
//recebe os dados do servidor
InputStreamReader receber = new InputStreamReader(conectar.getInputStream());
BufferedReader ler = new BufferedReader(receber);
amostrar+=ler.readLine() +"\n";
amostrar+=ler.readLine();
showMessageDialog(null,amostrar,"",PLAIN_MESSAGE);
}
catch(Exception e){
System.out.println(e);
}
}
}
Servidor
import java.io.*;
import java.net.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Servidor {
public static void main(String[] args) {
//calendario
Calendar cal = GregorianCalendar.getInstance();
int anoAtual = cal.get(Calendar.YEAR);
int mesAtual = cal.get(Calendar.MONTH);
int diaAtual = cal.get (Calendar.DAY_OF_MONTH);
String texto = "";
//cria o servidor
try{
ServerSocket servidor = new ServerSocket(5000);
while(true){
Socket conectar = servidor.accept();//espera o cliente se conectar
InputStreamReader pegarvalores = new InputStreamReader(conectar.getInputStream());
BufferedReader ler = new BufferedReader(pegarvalores);
int diaNasc = Integer.parseInt(ler.readLine().toString());
int mesNasc = Integer.parseInt(ler.readLine().toString());
int anoNasc = Integer.parseInt(ler.readLine().toString());
//lógica
int idade = (anoAtual - anoNasc);
if((mesAtual<mesNasc) && (diaAtual<diaNasc))
idade--;
if(idade<18){
texto = "voce tem: " + idade + " anos.\nMenor de idade";
}
else{
texto = "voce tem: " + idade + " anos.\nMaior de idade";
}
//manda os dados para o cliente
PrintWriter mandar = new PrintWriter(conectar.getOutputStream());
mandar.println(texto);
mandar.flush();
}
}
catch(Exception e){
System.out.println("Erro no servidor: " + e);
}
}
}
Brenda Lee
Curtidas 0
Respostas
Eduardo Pessoa
29/11/2013
alguem poderia ajudar o nosso amigo?
GOSTEI 0
Brenda Lee
29/11/2013
O cliente não está se comunicando com o servidor. Alguém poderia me dar uma ajudinha, por favor?
GOSTEI 0
Eduardo Pessoa
29/11/2013
quais procedimentos vc fez e não deu certo?
GOSTEI 0
Eduardo Pessoa
29/11/2013
o que vc fez?
GOSTEI 0
Paulo Pontes
29/11/2013
Bom dia BRENDALEE, entrei no fórum hoje e vi sua dúvida.
Testei o código que você fez e funcionou corretamente, dê um start a aplicação Servidor e depois dê start na aplicação Cliente.
Senão estiver funcionando é porque a aplicação Servidor está fora.
Espero ter ajudado.
Segue JOptionPane de Retorno.
[img]http://arquivo.devmedia.com.br/forum/imagem/355178-20140109-093251.png[/img]
Testei o código que você fez e funcionou corretamente, dê um start a aplicação Servidor e depois dê start na aplicação Cliente.
Senão estiver funcionando é porque a aplicação Servidor está fora.
Espero ter ajudado.
Segue JOptionPane de Retorno.
[img]http://arquivo.devmedia.com.br/forum/imagem/355178-20140109-093251.png[/img]
GOSTEI 0
Eduardo Pessoa
29/11/2013
era somente restartar?
GOSTEI 0