Problemas ao criar bate papo

Boa tarde galera, estou começando a estudar sockets, e o professor na faculdade passou um trabalho para criarmos um bate-papo simples, o fato é o seguinte, implementei 2 classes no meu computador aqui mesmo pelo eclipse, um cliente e um servidor, porém dexei o servidor aqui no desktop e o cliente implementei em um notebook, quando o cliente-servidor estavam na mesma maquina funcionava direitinho, mandava uma menssagem do cliente e o servidor recebia, porém ao separar os 2 n consigo, dar sempre um erro.
Obs: ja abri a porta 5000 no desktop e no notebook, irei postar os codigos e o erro aos senhores, agradeço desde ja.

Cliente


package Redes;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.net.Socket;

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

public class ChatCliente extends JFrame {

	JTextField TextoParaEnviar; 
	Socket socket;
	PrintWriter escritor;
	
	public ChatCliente () {
	
	super ("Chat");
	
	Font fonte = new Font ("Serif", Font.PLAIN, 26);	
	TextoParaEnviar = new JTextField();
	TextoParaEnviar.setFont(fonte);
	JButton botao = new JButton ("Enviar");
	botao.setFont(fonte);
	botao.addActionListener(new EnviarListener());
	Container envio = new JPanel ();
	envio.setLayout(new BorderLayout());
	envio.add(BorderLayout.CENTER, TextoParaEnviar);
	envio.add(BorderLayout.EAST, botao);
	getContentPane().add(BorderLayout.SOUTH, envio);
	
	configurarRede();
	
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setSize(500,90);
	setVisible(true);
	setLocationRelativeTo(null);
	
	
	
	}

	private class EnviarListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			
			escritor.println(TextoParaEnviar.getText());
			escritor.flush();
			TextoParaEnviar.setText("");
			TextoParaEnviar.requestFocus();
			
		}
		
		
		
	}
	
	
	public void configurarRede() {
		
		try {
			
			socket = new Socket ("192.168.56.1", 5000);
			escritor = new PrintWriter(socket.getOutputStream());
			
			
		} catch (Exception e) {}
		
		
		
	}
	
	
	public static void main(String[] args) {
		
		new ChatCliente();
			
		}

	}

Servidor


package Redes;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ChatServer {

	public ChatServer() throws Exception{
		
		ServerSocket server;
		Scanner leitura;
		
			try {
				
				server = new ServerSocket (5000);
				while (true) {
				Socket s = server.accept();
				leitura = new Scanner(s.getInputStream());
				System.out.println(leitura.nextLine());
				
				}
			} catch (IOException e) {}
			
		}
		

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

	}

}

Erro apresentado ao tentar enviar uma menssagem

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at treinandoRedes.Cliente$EnviarListener.actionPerformed(Cliente.java:55)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Ninguem pode dar uma força?

Ja estudei um pouco de Sockets a um tempo atrás.
Se você quiser que a mensagem seja enviada de uma máquina pra outra,
precisa haver um servidor nas duas máquinas. E não uma máquina sendo cliente
e a outra servidor.