Já vi que é preciso utilizar sockets e tudo mais… Só que infelizmente não sai do 0…
Gostaria de saber se alguém tem algum material, exemplo… algo do tipo, para que eu possa desenvolver, moldar… Para que a aplicação fique do Jeito que eu desejo…!
eu acabei de montar um e usei como referencia a apostila FJ11 da Caelum…muito boa !
t+ e boa sorte.
V
viniciusalvess
Tenho um com transferencia de arquivos e printscreen e conexão remota com vnc.
Posta ai o que ja fez que tentaremos te ajudar
S
SirDominque
Então, o pessoal aqui do forum esta me ajudando, por exemplo, o Vinygodoy me passou o código fonte do chat simples TCP/IP , E eu estou mudando o código pra aprender;
vou jogar o código aqui pra voce com as minhas mudanças, ok ?
importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.lang.String;importjava.net.InetSocketAddress;importjava.net.ServerSocket;importjava.net.Socket;importjava.net.UnknownHostException;importjava.util.Scanner;importjavax.swing.JOptionPane;publicclassSimpleChat2{publicstaticvoidmain(String[]args){Stringhostt=null;intporrt;Stringportt=null;Stringa;Socketsocket=newSocket();a=JOptionPane.showInputDialog(null,"Iniciar Como Cliente?");if(a.equals("sim")){hostt=JOptionPane.showInputDialog(null,"Insira o host");portt=JOptionPane.showInputDialog(null,"Insira a porta");porrt=Integer.parseInt(portt);startClient(hostt,porrt);//non-static method startClient(int) cannot be referenced from a static context }else{portt=JOptionPane.showInputDialog(null,"Insira a porta");porrt=Integer.parseInt(portt);startServer(porrt);////non-static method startServer(int) cannot be referenced from a static context//}}privatestaticvoidstartClient(Stringhost,intport){try{Socketsocket=newSocket();socket.connect(newInetSocketAddress(host,port));chat(socket);}catch(UnknownHostExceptione){System.out.println("Host desconhecido");System.out.println("Host: "+host);System.out.println("Porta: "+port);System.exit(2);}catch(IOExceptione){e.printStackTrace();System.exit(1);}}privatestaticvoidstartServer(intporta){try{ServerSocketsocket=newServerSocket(porta);System.out.println("Aguardando conexao...");Sockets=socket.accept();chat(s);}catch(IOExceptione){System.out.println("Problemas na comunicação: ");e.printStackTrace();System.exit(1);}}privatestaticvoidchat(Sockets)throwsIOException{System.out.println("Conectado com "+s.getRemoteSocketAddress());listen(s.getInputStream());talk(s.getOutputStream());}/** * @param outputStream */privatestaticvoidtalk(OutputStreamoutputStream)throwsIOException{DataOutputStreamoutput=newDataOutputStream(outputStream);Stringline="";while(!line.equals("EXIT")){Scannerscan=newScanner(System.in);System.out.print(": ");line=scan.nextLine();output.writeInt(line.length());for(charch:line.toCharArray())output.writeChar(ch);output.flush();}}/** * @param inputStream */privatestaticvoidlisten(finalInputStreaminputStream){newThread(newRunnable(){DataInputStreamds=newDataInputStream(inputStream);publicvoidrun(){try{while(true){intsize=ds.readInt();intcont=0;char[]chars=newchar[size];while(cont<size){chars[cont]=ds.readChar();cont=cont+1;}Stringstr=newString(chars);if(str.equals("EXIT")){System.out.println("Conversa terminada.");System.exit(0);}System.out.println(str);}}catch(IOExceptione){}}}).start();}}
Agradeço de verdade a ajuda e atenção de vocês… eu consegui achar isso aqui:
Servidor:
packagechat;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;importjava.util.Enumeration;importjava.util.List;importjava.util.Vector;publicclassServidorSocketextendsThread{// Parte que controla as conexões por meio de threads.privatestaticVectorCLIENTES;// socket deste clienteprivateSocketconexao;// nome deste clienteprivateStringnomeCliente;// lista que armazena nome de CLIENTESprivatestaticListLISTA_DE_NOMES=newArrayList();// construtor que recebe o socket deste clientepublicServidorSocket(Socketsocket){this.conexao=socket;}// testa se nomes são iguais, se for retorna truepublicbooleanarmazena(StringnewName){// System.out.println(LISTA_DE_NOMES);for(inti=0;i<LISTA_DE_NOMES.size();i++){if(LISTA_DE_NOMES.get(i).equals(newName))returntrue;}// adiciona na lista apenas se não existirLISTA_DE_NOMES.add(newName);returnfalse;}// remove da lista os CLIENTES que já deixaram o chatpublicvoidremove(StringoldName){for(inti=0;i<LISTA_DE_NOMES.size();i++){if(LISTA_DE_NOMES.get(i).equals(oldName))LISTA_DE_NOMES.remove(oldName);}}publicstaticvoidmain(Stringargs[]){// instancia o vetor de CLIENTES conectadosCLIENTES=newVector();try{// cria um socket que fica escutando a porta 5555.ServerSocketserver=newServerSocket(1500);System.out.println("ServidorSocket rodando na porta 5555");// Loop principal.while(true){// aguarda algum cliente se conectar.// A execução do servidor fica bloqueada na chamada do método// accept da// classe ServerSocket até que algum cliente se conecte ao// servidor.// O próprio método desbloqueia e retorna com um objeto da// classe SocketSocketconexao=server.accept();// cria uma nova thread para tratar essa conexãoThreadt=newServidorSocket(conexao);t.start();// voltando ao loop, esperando mais alguém se conectar.}}catch(IOExceptione){// caso ocorra alguma excessão de E/S, mostre qual foi.System.out.println("IOException: "+e);}}// execução da threadpublicvoidrun(){try{// objetos que permitem controlar fluxo de comunicação que vem do// clienteBufferedReaderentrada=newBufferedReader(newInputStreamReader(this.conexao.getInputStream()));PrintStreamsaida=newPrintStream(this.conexao.getOutputStream());// recebe o nome do clientethis.nomeCliente=entrada.readLine();// chamada ao metodo que testa nomes iguaisif(armazena(this.nomeCliente)){saida.println("Este nome ja existe! Conecte novamente com outro Nome.");CLIENTES.add(saida);// fecha a conexao com este clientethis.conexao.close();return;}else{// mostra o nome do cliente conectado ao servidorSystem.out.println(this.nomeCliente+" : Conectado ao Servidor!");}// igual a null encerra a execuçãoif(this.nomeCliente==null){return;}// adiciona os dados de saida do cliente no objeto CLIENTESCLIENTES.add(saida);// recebe a mensagem do clienteStringmsg=entrada.readLine();// Verificar se linha é null (conexão encerrada)// Se não for nula, mostra a troca de mensagens entre os CLIENTESwhile(msg!=null&&!(msg.trim().equals(""))){// reenvia a linha para todos os CLIENTES conectadossendToAll(saida," escreveu: ",msg);// espera por uma nova linha.msg=entrada.readLine();}// se cliente enviar linha em branco, mostra a saida no servidorSystem.out.println(this.nomeCliente+" saiu do bate-papo!");// se cliente enviar linha em branco, servidor envia mensagem de// saida do chat aos CLIENTES conectadossendToAll(saida," saiu"," do bate-papo!");// remove nome da listaremove(this.nomeCliente);// exclui atributos setados ao clienteCLIENTES.remove(saida);// fecha a conexao com este clientethis.conexao.close();}catch(IOExceptione){// Caso ocorra alguma excessão de E/S, mostre qual foi.System.out.println("Falha na Conexao... .. ."+" IOException: "+e);}}// enviar uma mensagem para todos, menos para o própriopublicvoidsendToAll(PrintStreamsaida,Stringacao,Stringmsg)throwsIOException{Enumeratione=CLIENTES.elements();while(e.hasMoreElements()){// obtém o fluxo de saída de um dos CLIENTESPrintStreamchat=(PrintStream)e.nextElement();// envia para todos, menos para o próprio usuárioif(chat!=saida){chat.println(this.nomeCliente+acao+msg);}}}}
Cliente:
packagechat;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintStream;importjava.net.Socket;publicclassClienteSocketextendsThread{// parte que controla a recepção de mensagens do clienteprivateSocketconexao;// construtor que recebe o socket do clientepublicClienteSocket(Socketsocket){this.conexao=socket;}publicstaticvoidmain(Stringargs[]){try{// Instancia do atributo conexao do tipo Socket, conecta a IP do// Servidor, PortaSocketsocket=newSocket("127.0.0.1",8010);// Instancia do atributo saida, obtem os objetos que permitem// controlar o fluxo de comunicaçãoPrintStreamsaida=newPrintStream(socket.getOutputStream());BufferedReaderteclado=newBufferedReader(newInputStreamReader(System.in));System.out.print("Digite seu nome: ");StringmeuNome=teclado.readLine();// envia o nome digitado para o servidorsaida.println(meuNome.toUpperCase());// instancia a thread para ip e porta conectados e depois inicia elaThreadthread=newClienteSocket(socket);thread.start();// Cria a variavel msg responsavel por enviar a mensagem para o// servidorStringmsg;while(true){// cria linha para digitação da mensagem e a armazena na// variavel msgSystem.out.print("Mensagem > ");msg=teclado.readLine();// envia a mensagem para o servidorsaida.println(msg);}}catch(IOExceptione){System.out.println("Falha na Conexao... .. ."+" IOException: "+e);}}// execução da threadpublicvoidrun(){try{// recebe mensagens de outro cliente através do servidorBufferedReaderentrada=newBufferedReader(newInputStreamReader(this.conexao.getInputStream()));// cria variavel de mensagemStringmsg;while(true){// pega o que o servidor envioumsg=entrada.readLine();// se a mensagem contiver dados, passa pelo if, caso contrario// cai no break e encerra a conexaoif(msg==null){System.out.println("Conexão encerrada!");System.exit(0);}System.out.println();// imprime a mensagem recebidaSystem.out.println(msg);// cria uma linha visual para respostaSystem.out.print("Responder > ");}}catch(IOExceptione){// caso ocorra alguma exceção de E/S, mostra qual foi.System.out.println("Ocorreu uma Falha... .. ."+" IOException: "+e);}}}
Ele funciona como um CHAT normal… só que eu gostaria de colocar pra funcionar na WEB… estou sem ideia. =/ ajuda ?
S
SirDominque
Então, mas aí teria que ter XHTML + Javascript ? Não sei direito, voce quer integrar em uma página ou fazer ele funcionar em rede?
R
rsmoraes
Ele funciona… eu consigo conversar normalmente… está funcionando com um server mesmo… vou tentar criar uma JSP aqui e no Servlet Chamando estes métodos das classes de Cliente… algo do tipo… para ver como funciona…^.~
R
rsmoraes
Eu gostaria de integra-lo em uma página, utilizando Servlet + JSP… o Usuário digita seu nome, e conecta no CHAT e conversa com todos lá. Isso tudo em uma página JSP.
Entenderam ? Obrigado.
Y
yhhik
vai no seu modem libera uma porta e no seu cliente coloca seu ip e a porta que vc liberou…aconselho que vc use o no-ip assim vc não vai precisar alterar o ip do cliente a cada vez que vc ligar o modem.
Eu gostaria de integra-lo em uma página, utilizando Servlet + JSP… o Usuário digita seu nome, e conecta no CHAT e conversa com todos lá. Isso tudo em uma página JSP.
Alguém teria o arquivo deste tutorial ? que você me mandou ?..
Abraços…
O problema não é conectar com o servidor… o problema é Interligar o meu Servlet + JSP, pois não estou conseguindo visualizar isto…
Obrigado.
Y
yhhik
se vc só quer ter um chat na web…vc pode usar seu chat desktop msm basta configurar seu modem para isso e vc poderar usar seu chat de qualquer lugar. mas se vc realmente deseja fazer outro chat e unir os dois então vc vai ter que acessar sua servlet com o socket.
veja se isso ajuda:
R
rsmoraes
Não vi muita utilidade neste arquivo no meu caso amigo…
Eu tenho uma intranet aqui e gostaria só de criar um chat dentro da mesma.
Bem simples…
Usuário clica em Conectar no Site… entra no site e pronto…
Só que está complicado de achar… estou tentando fazer tudo na mão aqui, utilizando Threads + Socket está um pouco complexo…