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)