Pessoal fiz um servidor para receber informações dos cliente. Até ae tudo beleza, agora preciso fazer para o cliente enviar mensagens… Não estou conseguindo!
Fiz o cliente utilizando: sock = new Socket(“IP”,PORT);
onde IP é o IP do servidor e PORT é a porta que o servidor espera a conexão!
Mas não estou achando o sock.send… sei lá algo relativo a isso… alguém poderia me ajudar?
Se você quiser enviar dados por um socket, você precisa “escrever” no outpustream desse socket.
O OutputStream você consegue chamando o método getOutputStream() da classe Socket. Depois basta usar os métodos de escrita mais adequado para a sua ocasião. Lembrando de sempre dar um flush() quando você kiser realmente enviar os seus dados, só pra garantir…
[]'s.
dcbasso
O que seria o metodo FLUSH em si? teria uma explicação um pouco mais detalhada…
Acho que vai dar certo!
Valeu ae, brigado!
dcbasso
Ainda fiquei na dúvida… como eu faço para colocar um STRING… nossa, totalmente perdido!
Vou continuar tentar,
Abraços
rubinelli
Pra mandar string, encapsule num writer, mais ou menos assim:
O buffer guarda os seus bytes até ficar lotado ou até você chamar flush(). Assim, você não manda um pacote TCP/IP pra cada write() que você der.
dcbasso
agora eu consegui fazer! Mas agora o problema é que não consigo mostrar no servidor as mensagens que mando!
nebal.metz
Buenas xiru.
Segue abaixo um cliente pra ti analisar…
Socketsocket=null;try{Stringip="201.87.177.161";InetAddressaddr=InetAddress.getByName(ip);intport=6969;BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));BufferedWriterout=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream()));// envia pro servidor a stringout.write("qualquer string");out.flush();socket.shutdownOutput();// recebe do servidorStringret=in.readLine();System.out.println("retorno do servico :"+ret);in.close();out.close();socket.close();}catch(Exceptione){e.printStackTrace();}
O livro Java: Como Programar do Deitel tem um exemplo simples do que esta procurando.
dcbasso
Pior que eu comprei o do Kathy Sierra e Bert Bates -> “Java Use a Cabeça!”… vou ver se acho o livro com algum conhecido!
Abraçossss
vanzella
Pior nada, ainda bem, 10x Java Use a Cabeça. tenho uns exemplos em casa, se der depois posto aqui.
dcbasso
uhahuah “pior” modo de dizer, gosto muito do livro que comprei! eu já o Deitel e achei que não faz meu tipo o livro… se conseguir algo! Agora tive uns contra-tempos aqui para resolver, se tudo der certo ainda quero mexer este final de ano no projeto!
Eu de imediato precisava de um servidor que recebesse mensagens de um ou mais clientes e salvase em arquivos de texto mesmo… para mim a parte de como receber as informações em fluxo seria bem legal… o mais dificil é entender como ele irá ficar recebendo os dados pela rede…
Abraços!
vanzella
velho, só deu pra postar fds:
Segue as duas classes, é bem simples, você pode melhorar, utilizando threads e um interface grafica melhor.
importjava.io.*;importjava.net.*;importjavax.swing.JOptionPane;classClienteTCP{publicstaticvoidmain(Stringargv[])throwsException{Stringip;intporta;Stringfrase="a";Stringstr;ip=JOptionPane.showInputDialog("Digite o numero do ip");str=JOptionPane.showInputDialog("Digite o numero da porta","6789");porta=Integer.parseInt(str);while(frase!=null){BufferedReaderdoUsuario=newBufferedReader(newInputStreamReader(System.in));SocketsocketCliente=newSocket(ip,porta);DataOutputStreamparaServidor=newDataOutputStream(socketCliente.getOutputStream());BufferedReaderdoServidor=newBufferedReader(newInputStreamReader(socketCliente.getInputStream()));frase=JOptionPane.showInputDialog("Digite a Mensagem");paraServidor.writeBytes(frase+"\n");socketCliente.close();}}}
importjava.io.*;importjava.net.*;importjavax.swing.JOptionPane;classServidorTCP{publicstaticvoidmain(Stringargs[])throwsException{StringfraseCliente;StringfraseMaiuscula;Stringstr;intporta;str=JOptionPane.showInputDialog("Digite a porta de comunicacao para o servidor","6789");porta=Integer.parseInt(str);ServerSocketsocketRecepcao=newServerSocket(porta);while(true){SocketsocketConexao=socketRecepcao.accept();BufferedReaderdoCliente=newBufferedReader(newInputStreamReader(socketConexao.getInputStream()));DataOutputStreamparaCliente=newDataOutputStream(socketConexao.getOutputStream());fraseCliente=doCliente.readLine();JOptionPane.showMessageDialog(null,fraseCliente,"Mensagem Recebida",JOptionPane.INFORMATION_MESSAGE);}}}