Pessoal meu problema não é grande só não tenho experiência pra isso…
é o seguinte, baseando no livro do deitel (java como programar 6ª) eu achei um código que modificado ficou com um problema que é + ou - assim, eu digito uma mensagem em um jtext do cliente (ou do servidor) e ele já aparece na outra telinha instantaneamente, sem precisar de clicar no botão.
Como eu faço para as mensagens serem passadas para a outra janelinha só depois de clicar no botão?
import java.io.*;
import java.net.*;
import msn.telas.*;
public class Cliente {
private String mensagem;
private DataOutputStream saida;
private DataInputStream entrada;
private Socket cliente;
private TelaCliente telacliente;
public Cliente(String IP, int porta) {
//Passo 1: Criar socket
try{
cliente = new Socket(InetAddress.getByName(IP), porta);
telacliente = new TelaCliente();
telacliente.setVisible(true);
}catch (EOFException eof) {
System.out.println("\nConexao finalizada com servidor - erro \n");
eof.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
/***********************************************************
* Efetua o tratamento para deixar o cliente conectado com o servidor *
***********************************************************/
public void runCliente(){
Scanner msn = new Scanner (System.in);
try {
//Passo 1: Inicia socket cliente
System.out.println("Conectando ....");
System.out.println("Conectando ao Servidor: " + cliente.getInetAddress().getHostName());
//Passo 2: Obtendo os fluxos de entrada e de saida
System.out.println("Obtendo streans de entrada e saida");
saida = new DataOutputStream (cliente.getOutputStream());
entrada = new DataInputStream (cliente.getInputStream());
saida.flush();
//Passo 4: Estabelecendo conexão com o servidor
do{
try{
//obtem mensagem enviada pelo servidor
mensagem = (String) entrada.readUTF();
telacliente.setTextArea1(mensagem);
//inicia comunicação aguardando o cliente digitar a mensagem
System.out.print("CLIENTE >>");
mensagem = telacliente.getJTextField3();
sendData(mensagem);
}catch (Exception cnfex) {
System.out.println( "\n Objeto de conexao desconhecido\n");
}
}while(!mensagem.equals("HALT") );
//PASSO 4: Fecha a conexao
System.out.println("\nFechando conexao\n");
entrada.close();
saida.close();
cliente.close();
}catch (EOFException eof) {
System.out.println("\nConexao finalizada com servidor\n");
}catch (IOException e) {
e.printStackTrace();
}
}
/*******************************************************
* Metodo utilizado para o envio de mensagem para um servidor *
*******************************************************/
public void sendData (String s){
try{
saida.writeUTF(s);
saida.flush();
}catch (IOException cnfex) {
System.out.println("\nErro ao gravar dados");
}
}
public static void main (String args[]){
Cliente c = new Cliente("127.0.0.1", 5000);
c.runCliente();
}
}
E esse é o servidor…
package Fluxo;
import java.io.*;
import java.net.*;
import msn.telas.TelaServidor;
import msn.telas.TelaCliente;
public class Servidor {
private ServerSocket servidor;
private Socket connection;
private int contador=1;
private String mensagem;
private DataOutputStream saida;
private DataInputStream entrada;
private TelaServidor telaservidor;
public Servidor(int porta, int tamFila) {
try{
servidor = new ServerSocket(porta, tamFila);
telaservidor = new TelaServidor();
telaservidor.setVisible(true);
}catch (EOFException eof) {
System.out.println("\n Erro de conexao com o cliente\n");
eof.printStackTrace();
}catch (IOException io) {
io.printStackTrace();
}
}
/******************************************************************
* Efetua o tratamento para deixar o cliente conectado com o servidor *
********************************************************************/
public void runServidor(){
try{
while( true ){
//Passo 2: Espera uma conexao
System.out.println("\nEsperando Conexao...\n");
//Cria a conexao.
connection = servidor.accept();
System.out.println("\nConexao " + contador + " recebido de: " +
connection.getInetAddress().getHostName());
//Passo 3: obtendo os fluxos de entrada e saida
//responsável por emitir a resposta ao cliente.
saida = new DataOutputStream(connection.getOutputStream());
//responsável por receber a resposta do cliente.
entrada = new DataInputStream(connection.getInputStream());
//esvazia o buffer.
saida.flush();
System.out.println("\n Pegando streans (fluxos) de entrada e saida\n");
//Passo 4: Processando conexao com cliente
mensagem = "sucesso na conexao\n";
saida.writeUTF(telaservidor.getJTextField3());
saida.flush();
do{
try{
//Lendo dados enviados pelo cliente
mensagem = entrada.readUTF();
//Coloca a mensagem enviada pelo cliente na tela do servidor.
telaservidor.setTextArea1(mensagem);
//Preparando para enviar dados para o cliente
if (!mensagem.equals("HALT")){
System.out.print("\n SERVIDOR >>");
mensagem = telaservidor.getJTextField3();
sendData(mensagem);
}//fim if.
}catch (Exception cnfex) {
System.out.println("\n Objeto redebido desconhecido - ERRO!!");
}
} while (!mensagem.equals("HALT"));
//Passo 5: Fecha a conexão
System.out.println("\n FIM DE CONEXAO COM CLIENTE " +
connection.getInetAddress().getHostName());
++contador;
}
}catch (EOFException eof) {
System.out.println("FIM DE CONEXAO COM CLIENTE ");
}catch (IOException io) {
io.printStackTrace();
}
}
/********************************************************************************
* Método utilizado para o envio de mensagem para um servidor *
*******************************************************************************/
public void sendData (String s) {
try{
saida.writeUTF(s);
saida.flush();
}catch (IOException cnfex) {
System.out.println("\n Erro ao escrever stream!!");
}
}
public static void main(String args[]){
Servidor s = new Servidor(5000, 0);
s.runServidor();
}
}


