importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.io.PrintWriter;importjava.net.Socket;importjava.net.UnknownHostException;importjava.util.Scanner;publicclassCliente{publicstaticvoidmain(String[]args){Scannersca=newScanner(System.in);System.out.println("Digita o numero da porta: ");intporta=sca.nextInt();try{Sockets=newSocket("dominio",porta);BufferedReaderbr=newBufferedReader(newInputStreamReader(s.getInputStream()));PrintWriterpw=newPrintWriter(newOutputStreamWriter(s.getOutputStream()));System.out.println(br.readLine());Stringstr;while(!(str=sca.nextLine()).equals("fim")){pw.println(str);pw.flush();System.out.println(br.readLine());}pw.println("Encerrado!!");pw.flush();br.close();pw.close();s.close();}catch(UnknownHostExceptione){// TODO Auto-generated catch blocke.printStackTrace();}catch(IOExceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
Pela exceção, o erro indica que não conhece o host, ou seja, onde você declarou “dominio” troque pelo IP ou hostname da máquina que deseja se conectar, para máquinas locais há dois modos:
Além do mais, a porta 8080 pode ser reservada para algum serviço, tente usar outra como 12345 por exemplo.
jsnpereira
solidsnake:
Pela exceção, o erro indica que não conhece o host, ou seja, onde você declarou “dominio” troque pelo IP ou hostname da máquina que deseja se conectar, para máquinas locais há dois modos:
Além do mais, a porta 8080 pode ser reservada para algum serviço, tente usar outra como 12345 por exemplo.
Como configurar IP do computador ou seja pegar IP que está no meu computador???
S
solidsnake
jsnpereira:
solidsnake:
Pela exceção, o erro indica que não conhece o host, ou seja, onde você declarou “dominio” troque pelo IP ou hostname da máquina que deseja se conectar, para máquinas locais há dois modos:
Além do mais, a porta 8080 pode ser reservada para algum serviço, tente usar outra como 12345 por exemplo.
Como configurar IP do computador ou seja pegar IP que está no meu computador???
Mas numa configuração de Socket você não precisa pegar o IP da máquina que está conectando, mas sim do IP do servidor ao qual quer se conectar e nesse caso não vejo problema em ir travado no fonte, citei o exemplo de localhost, para fins de testar a conexão tendo em vista que seu servidor e seu cliente estão na mesma máquina entende?
Pela exceção, o erro indica que não conhece o host, ou seja, onde você declarou “dominio” troque pelo IP ou hostname da máquina que deseja se conectar, para máquinas locais há dois modos:
Além do mais, a porta 8080 pode ser reservada para algum serviço, tente usar outra como 12345 por exemplo.
Como configurar IP do computador ou seja pegar IP que está no meu computador???
Mas numa configuração de Socket você não precisa pegar o IP da máquina que está conectando, mas sim do IP do servidor ao qual quer se conectar e nesse caso não vejo problema em ir travado no fonte, citei o exemplo de localhost, para fins de testar a conexão tendo em vista que seu servidor e seu cliente estão na mesma máquina entende?
eu implementei o código a parte que pega host da máquina.
Código:
publicclassCliente{publicstaticvoidmain(String[]args){Scannersca=newScanner(System.in);System.out.println("Digita o numero da porta: ");intporta=sca.nextInt();InetAddressia=null;try{ia=InetAddress.getLocalHost();System.out.println("Endereço: "+ia.getHostAddress());System.out.println("Nome da Máquina: "+ia.getHostName());System.out.println("Porta: "+porta);Sockets=newSocket(ia.getHostName(),porta);BufferedReaderbr=newBufferedReader(newInputStreamReader(s.getInputStream()));PrintWriterpw=newPrintWriter(newOutputStreamWriter(s.getOutputStream()));System.out.println(br.readLine());Stringstr;while(!(str=sca.nextLine()).equals("fim")){pw.println(str);pw.flush();System.out.println(br.readLine());}pw.println("Encerrado!!");pw.flush();br.close();pw.close();s.close();}catch(UnknownHostExceptione){// TODO Auto-generated catch blocke.printStackTrace();}catch(IOExceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
mas apareceu outro pequeno erro:
Digita o numero da porta:
O servidor está com a mesma porta (7839) para receber conexões dos clientes?
Como está o código do lado servidor?
jsnpereira
solidsnake:
O servidor está com a mesma porta (7839) para receber conexões dos clientes?
Como está o código do lado servidor?
eu criei a classe servidor e coloca uma porta que recebe número do aleatorio.
Servidor
publicclassServidor{staticintporta;staticSockets=null;publicstaticvoidmain(String[]args){Stringopcao;Scannersca=newScanner(System.in);porta=gerarPorta();try{finalServerSocketserver=newServerSocket(porta);System.out.println("-------------------------------------");System.out.println("----------Cliente do Email-----------");System.out.println("Porta: "+porta);System.out.println("-------------------------------------");finalCorreioc=newCorreio();System.out.println("Quer adicionar mais um e-mail do servidor? s/n");opcao=sca.next();if('s'==opcao.charAt(0)){adicionarEmail(c);}finalArrayList<Email>emails=c.getLista();System.out.println("Lista do E-mail disponiveos do servidor: ");for(Emailemail:emails){System.out.println(email);}while(true){s=server.accept();newTransacao(s,emails);}}catch(IOExceptione){// TODO Auto-generated catch blocke.printStackTrace();}}publicstaticintgerarPorta(){return(int)(Math.random()*9999);}publicstaticvoidadicionarEmail(Correioc){Stringopcao=null;do{System.out.println("-------------------------------------");System.out.println("Cadastar do E-mail");intdestino=Integer.parseInt(JOptionPane.showInputDialog("Destino:"));Stringassunto=JOptionPane.showInputDialog("Assunto: ");Stringmensagem=JOptionPane.showInputDialog("Mensagem: ");c.addEmail(destino,assunto,mensagem);opcao=JOptionPane.showInputDialog("Deseja adicionar mais um e-mail? s/n");}while(opcao.charAt(0)=='s');System.out.println("Cadastro com sucesso!!!");}}
S
solidsnake
Porta de número aleatório para esse tipo de conexão é inviável, pois como o cliente saberá qual porta conectar? Por essa razão a exceção anterior recusou a conexão devido a porta estar fixa.
Também não adianta randomizar a porta no cliente, pois ele nunca será igual ao que o servidor está gerando, resumindo, troque por uma porta fixa, o número 7839 está muito bom para esse fim.