![]() |
Sockets und Java
So, nun mal eine Frage zu Sockets... :D
Ich habe eine Endlosschleife mit der ich auf einkommende Verbindungen warte: Code:
while(true) { Doch wie stelle ich in dem Thread fest, ob der Client seine Connection geschlossen hat, oder nicht??? :confused: Code:
public void run() { |
Und noch eine Frage hätte ich:
Wie übertrage ich ein ganzes OBJEKT über eine Socketverbindung? Auf der Clientseite müsste ein Objekt erstellt, zum Server geschickt und von diesem 1:1 repliziert werden können, so dass dieser dann Eigenschaften aus diesem Objekt auslesen, bzw auf Methoden zugreifen kann... Kann mir da wer helfen? :confused: |
Ad 1) schon mal mit der Methode isConnected() der Klasse Socket versucht?
Mit den beiden Methoden getOutputStream() und getInputStream() bekommst du einen Input- bzw Output Stream. Direkte Subklassen von denen ist ObjectInputStream bzw. ObjektOutputStream mittels denen du Objekte serialisieren kannst solange sie das Interface Serializable implementieren. Und damit kannst du Objekte über Sockets verschicken. Siehe dazu auch: http://java.sun.com/docs/books/tutor...ngWriting.html bzw. das ganze Tutorial über Sockets: http://java.sun.com/docs/books/tutor...ets/index.html |
Da bin ich auch kurz nach dem Posten draufgekommen :rolleyes: , aber es gibt eh immer noch ein (ok, wäre schön, wenn es nur eines wäre... ;) ) Problem:
Sagen wir ich verschick ein Objekt vom Typ JPanel... Alles kein Problem, NUR... wie mach ich auf der Empfängerseite wieder ein JPanel draus? Ich habe es mit Code:
JPanel o = (JPanel) oinput.readObject(); Wenn man aber Code:
System.out.println(oinput.readObject()); |
Habe mir das mal kurz ind der Java API angeshen. An und für sich müsste es genauso funktionieren. JPanel ist Serializable, und mittels readObject bekommst auch das Objekt.
Was funktioniert denn nicht? Versuche erst einmal einfacher Objekte (Value Objekte wie zB. eine HashMap mit Werten) zu verschiocken. Da kannst du die Werte direkt überprüfen. |
Ich glaub's nicht... Aufeinmal funktioniert das und ich hab (glaub ich *g*) nichts verändert... :eek:
Vorher hat er sich zur Laufzeit furchtbar echauffiert, er könne dieses Objekt nicht casten... Tjo... :bier: Vielen Dank jedenfalls. Und keine Angst, ich komme wieder! :D :D |
Langsam wird mir die Fragerei peinlich... :o
Erstmal Code (Kot?): Code:
import java.net.*; Code:
java.io.StreamCorruptedException: invalid stream header |
Unter Java-API steht, dass der Client den Header 'has written and flushed the header' . Offenbar hat der Client den Header nicht ganz rausgeschrieben, was man in diesem Listing aber nicht sieht.
|
Hi!
Der Client-Code sieht ungefähr so aus: Verbindung herstellen Code:
void jButton1_actionPerformed(ActionEvent e) { Code:
void btnSend_actionPerformed(ActionEvent e) { |
Die Methode run() vom Server-Thread:
Code:
public void run() { |
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag