Hallo,
ich habe folgendes Problem.
Ich besitze einen TCP Clienten und einen TCP Server.
Der TCP Server verschickt an meinen Clienten mittels
[TCP Server]
Objekte an meinen Clienten.
Diese empfängt mein Client durch
[TCP Client]
Netbeans regt sich zwar ein bisschen darüber auf mit z.B.,
[XML]TCPClient.java:59: warning: [unchecked] unchecked cast
found : java.lang.Object
required: java.util.ArrayList<java.lang.String[]>
IP = (ArrayList<String[]>) ois.readObject();[/XML]
aber es funktioniert auch auf diese Art und Weise.
Ich würde das empfangen beim Clienten, also das getObjectStreams gerne im run() eines Threads erledigen.
Aussehen in meinem TCPClienten würde es dann so:
[TCP Client im "Thread Stil"]
Das ärgerliche ist, es tritt immer eine Exception auf "Fehler aufgetreten".
und die Daten werden vom Server nicht versandt. Das Programm läuft zwar weiter (Client und Server), aber ohne empfangenen Daten.
Woran liegt mein Problem?
Ist mein gecaste die Ursache? Komme leider nicht weiter.
Würde mich über Hilfe sehr freuen.
ich habe folgendes Problem.
Ich besitze einen TCP Clienten und einen TCP Server.
Der TCP Server verschickt an meinen Clienten mittels
[TCP Server]
Java:
ObjectOutputStream oos = new ObjectOutputStream(sverb.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(sverb.getInputStream());
mr = new MonitorBean();
oos.writeObject(mr.getTraffic(user, pass));
oos.writeObject(mr.getMaxTraffic(user, pass));
oos.writeObject(mr.getIPs(user, pass));
Objekte an meinen Clienten.
Diese empfängt mein Client durch
[TCP Client]
Java:
public void getObjectStreams() throws IOException, ClassNotFoundException {
oos = new ObjectOutputStream(clientSocket.getOutputStream());
ois = new ObjectInputStream(clientSocket.getInputStream());
Traf = (Integer) ois.readObject();
MT = (ArrayList<String>) ois.readObject(); // erstellt wurden
IP = (ArrayList<String[]>) ois.readObject();
}
Netbeans regt sich zwar ein bisschen darüber auf mit z.B.,
[XML]TCPClient.java:59: warning: [unchecked] unchecked cast
found : java.lang.Object
required: java.util.ArrayList<java.lang.String[]>
IP = (ArrayList<String[]>) ois.readObject();[/XML]
aber es funktioniert auch auf diese Art und Weise.
Ich würde das empfangen beim Clienten, also das getObjectStreams gerne im run() eines Threads erledigen.
Aussehen in meinem TCPClienten würde es dann so:
[TCP Client im "Thread Stil"]
Java:
public void getObjectStreams() throws IOException, ClassNotFoundException {
oos = new ObjectOutputStream(clientSocket.getOutputStream());
ois = new ObjectInputStream(clientSocket.getInputStream());
new Thread(new Runnable() {
public void run() {
try {
Traffic = (Integer) ois.readObject();
MaxTraffic = (ArrayList<String>) ois.readObject(); // erstellt wurden
IP = (ArrayList<String[]>) ois.readObject();
} catch (IOException ex) {
System.out.println("Fehler aufgetreten");
Logger.getLogger(TCPClient.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(TCPClient.class.getName()).log(Level.SEVERE, null, ex);
}
}
}).start();
}
Das ärgerliche ist, es tritt immer eine Exception auf "Fehler aufgetreten".
Java:
TCPClient$1 run
SCHWERWIEGEND: null
java.net.SocketException: Socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:146)
at java.net.SocketInputStream.read(SocketInputStream.java:199)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2265)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2558)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2568)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1314)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
at de.genias.mikrotik.verbindungscenter.TCPClient$1.run(TCPClient.java:71)
at java.lang.Thread.run(Thread.java:636)
und die Daten werden vom Server nicht versandt. Das Programm läuft zwar weiter (Client und Server), aber ohne empfangenen Daten.
Woran liegt mein Problem?
Ist mein gecaste die Ursache? Komme leider nicht weiter.
Würde mich über Hilfe sehr freuen.
Zuletzt bearbeitet: