Chat simples com sockets

Bom pessoal, fiz um chatzinho simples usando sockets…
Testei aqui no meu computador o servidor e o cliente e consegui
trocar mensagens normal.
Enviei o código do cliente pro meu amigo e fiquei com o do servidor. Rodei o servidor e ele rodou o cliente. Até aqui normal,
mas quando a gente tentou trocar mensagens, elas não eram enviadas e dava um erro no cmd.
Gostaria que alguem me ajudasse a resolver isso.

Aqui os códigos :

Servidor

[code]
import java.net.Socket;
import java.net.ServerSocket;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class Server extends JFrame {

JTextArea saida;
JTextField entrada;

BufferedReader leitor;
PrintWriter w;
private Socket socket1;

public Server() throws Exception {
    super("SkyFi Chat 1.0");
	
	Font fonte = new Font("SansSerif", Font.PLAIN, 16);
	
	entrada = new JTextField();
	entrada.setFont(fonte);
	
	
	saida = new JTextArea();
	saida.setFont(fonte);
	saida.setEditable(false);
	
	JButton botao = new JButton("Enter");
	botao.addActionListener(new ActionListener() {
	
	    public void actionPerformed(ActionEvent e) {

		    String t2 = entrada.getText();
			w.println(entrada.getText());
			w.flush();
			saida.append("You say: " + t2 + "\n");
			entrada.setText("");
			entrada.requestFocus();
        } 
	});
	Container recebimento = new JPanel();
	recebimento.setLayout(new BorderLayout());
	recebimento.add(BorderLayout.NORTH, saida);
	recebimento.add(BorderLayout.CENTER, entrada);
	recebimento.add(BorderLayout.EAST, botao);
	
	getContentPane().add(BorderLayout.SOUTH, recebimento);
	getContentPane().add(BorderLayout.CENTER, saida);
	
	setSize(500,500);
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setVisible(true);
	
	configuraRede();
}

public static void main(String[] args) throws Exception {
 
 new Server();
 
}

  public void configuraRede() throws Exception {
  
    ServerSocket servSocket = new ServerSocket(6000);
	Socket socket1 = servSocket.accept();
	BufferedReader leitor = new BufferedReader(new InputStreamReader(socket1.getInputStream()));
	OutputStream out = socket1.getOutputStream();
	w = new PrintWriter(out);

    String texto = null;

		try {
			while(true) {
			
			    if((texto=leitor.readLine())!=null) {
				
				 saida.append("Wallace says: " + texto + "\n");
			   } 
			}
		} catch (IOException e) {}

  }    

} [/code]

Cliente

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Client extends JFrame {
	
	JTextField entrada;
	JTextArea saida;
	Socket socket;
	PrintWriter w;
	BufferedReader leitor;
	
	Client() throws Exception {
		super("SkyFi Chat 1.0");
		
		Font fonte = new Font("SansSerif", Font.PLAIN, 16);
		entrada = new JTextField();
		entrada.setFont(fonte);
		
		saida = new JTextArea();
		saida.setEditable(false);
		saida.setFont(fonte);
		
		JButton botao = new JButton("Enter");
		botao.addActionListener(new EnviarListener());
		Container envio = new JPanel();
		envio.setLayout(new BorderLayout());
		envio.add(BorderLayout.CENTER, entrada);
		envio.add(BorderLayout.NORTH, saida);
		envio.add(BorderLayout.EAST, botao);
		
		getContentPane().add(BorderLayout.SOUTH, envio);
		getContentPane().add(BorderLayout.CENTER, saida);
		
	    setSize(500,500);
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setVisible(true);
		
		configuraRede();
	}
	
	    private class EnviarListener implements ActionListener {

			@Override
			public void actionPerformed(ActionEvent e) {
				
				String t2 = entrada.getText();
				w.println(entrada.getText());
				w.flush();
				saida.append("You say: " + t2 + "\n");
				entrada.setText("");
				entrada.requestFocus();
				
			}
	    	
	    }

	private void configuraRede() throws Exception {
		socket = new Socket("localhost", 6000);
		OutputStream out = socket.getOutputStream();
		w = new PrintWriter(out);
		leitor = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		
		String texto = null;
		
		try {
		    while(true) {
		        if((texto=leitor.readLine())!=null) {
			
			        saida.append("Lucas says: " + texto + "\n");
			    }
		    }
	    } catch(IOException e) {}
	} 
	
	public static void main(String[] args) throws Exception {
		new Client();
		
	}

}

Eu não li seu código, mas quem sabe isso te ajuda.

Não é pra nenhum dos 2 ficar “de servidor”. Cada um tem que abrir um client do chat pra isso funcionar. O servidor recebe a mensagem, e retorna pros 2

Bom Dia lucasstoffel

Na apostila da Caelum tem um exemplo de “Msn” por socket, no livro do Deitel tb tem um exemplo,

o que o amigo Rodrigo Sasaki disse ta certo…mas pode ser assim também…

O servidor pode ser um cliente também…

mas a instancia do servidor só pode estar rodando em uma máquina…e o cliente em várias…

Salve lucasstoffel,

Cara não esquece que se você tiver um roteador não é a mesma coisa que realizar uma conexão local, pra funcionar uma conexão em rede na internet, você precisa liberar a porta que você utiliza na sua classe servidor.

Abraço