kann mir jemand sagen was an diesem chat nicht funktioniert? Ich bekomme eine null pointer exception....
client
server
client
Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.net.*;
public class EinfacherChatClient
{
JTextArea eingehend;
JTextField ausgehend;
BufferedReader reader;
PrintWriter writer;
Socket sock;
public static void main(String[]args)
{
EinfacherChatClient client=new EinfacherChatClient();
client.los();
}
public void los()
{
JFrame frame=new JFrame("Einfacher Chat");
JPanel hauptPanel=new JPanel();
eingehend=new JTextArea(15,20);
eingehend.setLineWrap(true);
eingehend.setWrapStyleWord(true);
eingehend.setEditable(false);
JScrollPane fScroller=new JScrollPane(eingehend);
fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
JButton sendenButton=new JButton("Senden");
sendenButton.addActionListener(new SendenButtonListener());
hauptPanel.add(fScroller);
hauptPanel.add(ausgehend);
hauptPanel.add(sendenButton);
netzwerkEinrichten();
Thread readerThread=new Thread(new EingehendReader());
readerThread.start();
frame.getContentPane().add(BorderLayout.CENTER, hauptPanel);
frame.setSize(400,500);
frame.setVisible(true);
}
private void netzwerkEinrichten()
{
try
{
sock=new Socket("localhost",5002);
InputStreamReader streamReader=new InputStreamReader(sock.getInputStream());
reader=new BufferedReader(streamReader);
writer=new PrintWriter(sock.getOutputStream());
JOptionPane.showMessageDialog(null, "Verbindung hergestellt");
}
catch(IOException ex)
{
JOptionPane.showMessageDialog(null, "Verbindung konnte nicht hergestellt werden");
}
}
public class SendenButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
try
{
writer.println(ausgehend.getText());
writer.flush();
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Mitteilung konnte nicht gesendet werden");
}
ausgehend.setText("");
ausgehend.requestFocus();
}
}
public class EingehendReader implements Runnable
{
public void run()
{
String nachricht;
try
{
while((nachricht=reader.readLine())!=null)
{
System.out.println("gelesen: "+nachricht);
eingehend.append(nachricht+"\n");
}
}
catch(IOException ex)
{}
}
}
}
server
Java:
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.Iterator;
public class SehrEinfacherChatServer
{
ArrayList clientAusgabeStröme;
public class ClientHandler implements Runnable
{
BufferedReader reader;
Socket sock;
public ClientHandler(Socket clientSocket)
{
try
{
sock=clientSocket;
InputStreamReader isReader=new InputStreamReader(sock.getInputStream());
reader=new BufferedReader(isReader);
}
catch(IOException ex){}
}
public void run()
{
String nachricht;
try
{
while((nachricht=reader.readLine()) != null)
{
System.out.println("gelesen: "+nachricht);
esAllenWeitersagen(nachricht);
}
}
catch(IOException ex){}
}
}
public static void main (String[] args)
{
new SehrEinfacherChatServer().los();
}
public void los()
{
clientAusgabeStröme=new ArrayList();
try
{
ServerSocket serverSock=new ServerSocket(5002);
while(true)
{
Socket clientSocket=serverSock.accept();
PrintWriter writer=new PrintWriter(clientSocket.getOutputStream());
clientAusgabeStröme.add(writer);
Thread t=new Thread(new ClientHandler(clientSocket));
t.start();
System.out.println("habe eine Verbindung");
}
}
catch(Exception ex){}
}
public void esAllenWeitersagen(String nachricht)
{
Iterator it=clientAusgabeStröme.iterator();
while(it.hasNext())
{
try
{
PrintWriter writer=(PrintWriter) it.next();
writer.println(nachricht);
writer.flush();
}
catch(Exception ex){}
}
}
}