Hi,
versuch hier ne Verbindung aus Client und Server herzustellen. Soweit auch alles gut. Allerdings ein Problem gibts mitm Senden:
Die Client-Methode zum Senden:
Die Methode vom Server:
Problem ist, dass zwar die Anfrage an den Server raus, also die Anfrage kommt an, der geht in die IF-Abfrage rein.
Aber das Zurücksenden eines Objektes läuft nicht. Also beim Senden vom Server direkt gibts keinen Fehler.
Aber beim Empfangen der Antwort im Client erhalte ich dann folgende Exeception:
Zeile 76 ist die hier: ins = new ObjectInputStream(in);
Hoffe ihr habt ne Idee...danke
versuch hier ne Verbindung aus Client und Server herzustellen. Soweit auch alles gut. Allerdings ein Problem gibts mitm Senden:
Die Client-Methode zum Senden:
Java:
public static Object send(Object object){
//Verbindung aufnehmen
Socket socket = startConnection();
Object obj = null;
//Senden
OutputStream out;
ObjectOutputStream oos = null;
try {
out = socket.getOutputStream();
oos = new ObjectOutputStream(out);
oos.writeObject(object);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Antwort empfangen
InputStream in;
ObjectInputStream ins = null;
try {
in = socket.getInputStream();
ins = new ObjectInputStream(in);
obj = ins.readObject();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("[Client] Object gesendet");
//Verbindungen beenden
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
closeConnection(socket);
return obj;
}
Die Methode vom Server:
Java:
public void run() {
try {
InputStream in = connectionToClient.getInputStream();
System.out.println("[SERVER] Lese input Stream...");
// Erstellen des ObjectInputStreams
ObjectInputStream objIn = new ObjectInputStream(in);
OutputStream out = null;
ObjectOutputStream objOut = null;
try {
// Empfangen des vom Client gesendetn Objekts
Object obj = objIn.readObject();
System.out.println("[SERVER] Object erhalten");
if (obj instanceof Ausgabe) {
....
}else if(obj instanceof String){
String abruf = (String) obj;
System.out.println("[SERVER] neue String-Anfrage: " + abruf);
if(abruf.equals("sendAlleZeitschriftenKomplett")){
System.out.println("[SERVER] Alle Zeitschriften inkl. Ausgaben werden verschickt");
//Antwort zurücksenden
out = connectionToClient.getOutputStream();
objOut = new ObjectOutputStream(out);
Object test = "Huhu";
objOut.writeObject(test);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
objIn.close();
//objOut.close();
connectionToClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Problem ist, dass zwar die Anfrage an den Server raus, also die Anfrage kommt an, der geht in die IF-Abfrage rein.
Aber das Zurücksenden eines Objektes läuft nicht. Also beim Senden vom Server direkt gibts keinen Fehler.
Aber beim Empfangen der Antwort im Client erhalte ich dann folgende Exeception:
Zeile 76 ist die hier: ins = new ObjectInputStream(in);
java.io.EOFException
at java.ibjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.ibjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.ibjectInputStream.readStreamHeader(Unknown Source)
at java.ibjectInputStream.<init>(Unknown Source)
at de.steuerung.MagazinClient.send(MagazinClient.java:76)
at de.gui.MagazinManagerWindow.createInhalt(MagazinManagerWindow.java:174)
at de.gui.MagazinManagerWindow.loadContent(MagazinManagerWindow.java:139)
at de.gui.listener.JMenuBarListener.actionPerformed(JMenuBarListener.java:28)
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.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.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.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)
Hoffe ihr habt ne Idee...danke