Huhu,
ich habe ein problem bei dem ich nicht weiter komme und zwar wenn ich mit meinen Client auf den SocketChannel schreiben will wirft java mir immer eine NullPointerExeption bei der ich nicht weis wieso.
ich bin noch recht neu in dem NIO und buffer daher bitte ich um denkhilfen und ideen.
Hier nun erstmal die ausgabe der konsole:
und hier die funktion die den fehler auslöst:
diese funktion bekommt den String durch diese beiden funktionen:
ich hoffe ihr könnt mir weiter helfen. Wenn ihr weiteren code braucht kann ich ihn ja noch posten.
vielen dank schonmal
hakkemaster
ich habe ein problem bei dem ich nicht weiter komme und zwar wenn ich mit meinen Client auf den SocketChannel schreiben will wirft java mir immer eine NullPointerExeption bei der ich nicht weis wieso.
ich bin noch recht neu in dem NIO und buffer daher bitte ich um denkhilfen und ideen.
Hier nun erstmal die ausgabe der konsole:
Code:
run:
Inside receivemsg
Inside SendMessage
msg is jTextField1
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at client.Client.sendMessage(Client.java:55)
at client.GUI.jButton1ActionPerformed(GUI.java:82)
at client.GUI.access$000(GUI.java:17)
at client.GUI$1.actionPerformed(GUI.java:46)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
java.io.IOException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:25)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
at client.Client$RecvThread.run(Client.java:106)
und hier die funktion die den fehler auslöst:
Java:
public int sendMessage(String msg) {
if(msg.equals(""))
{
return 0;
}
System.out.println("Inside SendMessage");
ByteBuffer bytebuf = ByteBuffer.allocate(1024);
int nBytes = 0;
try {
System.out.println("msg is " + msg);
bytebuf = ByteBuffer.wrap(msg.getBytes());
nBytes = client.write(bytebuf);
System.out.println("nBytes is " + nBytes);
if (msg.equals("quit") || msg.equals("shutdown")) {
System.out.println("time to stop the client");
interruptThread();
try {
Thread.sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}
client.close();
return -1;
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Wrote "
+ nBytes + " bytes to the server");
return nBytes;
}
diese funktion bekommt den String durch diese beiden funktionen:
Java:
public String getTF()
{
return jTextField1.getText().toString();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
c.sendMessage(getTF());
}
ich hoffe ihr könnt mir weiter helfen. Wenn ihr weiteren code braucht kann ich ihn ja noch posten.
vielen dank schonmal
hakkemaster