thanosfotn Δημοσ. 11 Αυγούστου 2013 Μέλος Δημοσ. 11 Αυγούστου 2013 Το έκανα τελικά με TCP server και client το κινητό και δουλέυει τέλεια.Απλά τώρα θέλω να στείλω από το πρόγραμμα που τρέχει στον υπολογιστή στο κινήτο δεδομένα απο την βάση δεδομένων που έχω στον υπολογιστή.Μήπως γίνεται αυτό με έναν εύκολο τρόπο γιατι ο τρόπος που σκέφτηκα είναι πολύπλοκος.Η βάση δεδομένων περίεχει και εικόνες.Γίνεται με ObjectOutputStream ??
παπι Δημοσ. 12 Αυγούστου 2013 Δημοσ. 12 Αυγούστου 2013 Οριζεις ενα πρωτοκολλο και τελειωνει το θεμα. Το tcp client server δημιουργει ενα λινκ μεταξυ δυο ποϊντ, το πως θα "μιλισουν" μεταξυ τους αυτα τα ποιντ ειναι δικο σου θεμα. Βεβαια υπαρχει και ο ευκολος τροπος, δηλαδη συνδεεσαι με την βαση απευθειας απο το κινητο.
ZAKKWYLDE Δημοσ. 12 Αυγούστου 2013 Δημοσ. 12 Αυγούστου 2013 Ναι μπορείς να στείλεις απευθείας Image ή Buffered Image. Το θέμα είναι ότι δεν έχεις μόνο Image στον συγκεκριμένο πίνακα; Σίγουρα θα έχεις και ID. Άρα πρέπει να μοντελοποιήσεις όσους πίνακες θέλεις να διαχειριστείς και να στέλνεις ένα τέτοιο αντικείμενο στον Client. Τώρα το αντικείμενο μπορεί να είναι απλά ένα Entity, μπορεί να είναι ένα ArrayList<Entity> κτλ, οπότε θα πρέπει να βλέπεις απο τον Client, τι λαμβάνεις για να το διαχειριστείς ανάλογα. (αυτό είναι και μέρος του πρωτοκόλλου που πρέπει να ορίσεις). Το πιο απλό φυσικά είναι να συνδεθείς απευθείας στη βάση και να τελειώνεις.
Timonkaipumpa Δημοσ. 12 Αυγούστου 2013 Δημοσ. 12 Αυγούστου 2013 Το έκανα τελικά με TCP server και client το κινητό και δουλέυει τέλεια.Απλά τώρα θέλω να στείλω από το πρόγραμμα που τρέχει στον υπολογιστή στο κινήτο δεδομένα απο την βάση δεδομένων που έχω στον υπολογιστή.Μήπως γίνεται αυτό με έναν εύκολο τρόπο γιατι ο τρόπος που σκέφτηκα είναι πολύπλοκος.Η βάση δεδομένων περίεχει και εικόνες.Γίνεται με ObjectOutputStream ?? Με ObjectOutpuStream στέλνεις ένα object το οποίο θα λάβεις με το αντίστοιχο InputStream στον άλλο node. Εάν έχεις το "definition" του Object τότε η αντιστοιχία των bytes που στέλνονται μέσω δικτύου θα γίνει αυτόματα. Θα πρέπει όμως να το στείλεις, να φροντίσεις το blocking του accept() κτλ.
thanosfotn Δημοσ. 16 Αυγούστου 2013 Μέλος Δημοσ. 16 Αυγούστου 2013 Πως ακριβώς θα δουλέψει όμως το ObjectInputStream? Στον android client εχω ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); AvaliableMenu p = (AvaliableMenu) in.readObject(); όπου AvaliableMenu ειναι ένα μια class import android.graphics.Bitmap; public class AvaliableMenu { String name=null ; String description =null; Bitmap MenuImage=null; } η οποία υπάρχει ακριβώς ίδια στο java server που τρεχει στο pc import java.awt.image.BufferedImage; import java.io.Serializable; public class AvaliableMenu implements Serializable{ public String name ; public String description ; transient public BufferedImage MenuImage; } και χρησιμοποιω ObjectOutputStream os = new ObjectOutputStream(socket.getOutputStream()); os.writeObject(Mymenu); αφού πρωτα δωσω τιμές στα fields της κλάσης.οταν προσπάθω να στείλω τα δεδόμενα απο τον σέρβερ στον client ο emulator μου πετάει exception : 08-10 03:00:24.164: W/System.err(5352): java.lang.ClassNotFoundException: AvaliableMenu08-10 03:00:24.204: W/System.err(5352): at java.lang.Class.classForName(Native Method)08-10 03:00:24.215: W/System.err(5352): at java.lang.Class.forName(Class.java:217)08-10 03:00:24.215: W/System.err(5352): at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2301)08-10 03:00:24.215: W/System.err(5352): at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1660)08-10 03:00:24.215: W/System.err(5352): at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:683)08-10 03:00:24.215: W/System.err(5352): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1803)08-10 03:00:24.215: W/System.err(5352): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)08-10 03:00:24.215: W/System.err(5352): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)08-10 03:00:24.215: W/System.err(5352): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)08-10 03:00:24.224: W/System.err(5352): at com.example.ordermenu.MainActivity$LongOperation.doInBackground(MainActivity.java:67)08-10 03:00:24.224: W/System.err(5352): at com.example.ordermenu.MainActivity$LongOperation.doInBackground(MainActivity.java:1)08-10 03:00:24.224: W/System.err(5352): at android.os.AsyncTask$2.call(AsyncTask.java:287)08-10 03:00:24.224: W/System.err(5352): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)08-10 03:00:24.224: W/System.err(5352): at java.util.concurrent.FutureTask.run(FutureTask.java:137)08-10 03:00:24.224: W/System.err(5352): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)08-10 03:00:24.234: W/System.err(5352): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)08-10 03:00:24.234: W/System.err(5352): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)08-10 03:00:24.234: W/System.err(5352): at java.lang.Thread.run(Thread.java:856)08-10 03:00:24.234: W/System.err(5352): Caused by: java.lang.NoClassDefFoundError: AvaliableMenu08-10 03:00:24.234: W/System.err(5352): ... 18 more08-10 03:00:24.234: W/System.err(5352): Caused by: java.lang.ClassNotFoundException: AvaliableMenu08-10 03:00:24.244: W/System.err(5352): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)08-10 03:00:24.244: W/System.err(5352): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)08-10 03:00:24.244: W/System.err(5352): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)08-10 03:00:24.254: W/System.err(5352): ... 18 more Τι κάνω λάθος?
παπι Δημοσ. 16 Αυγούστου 2013 Δημοσ. 16 Αυγούστου 2013 Δεν το λες και "ακριβως ιδια". Η μια εχει bitmap και αλλη εχει bufferedImage που ειναι και non-serializable. Αν και απο τα exception βλεπω οτι εχεις θεμα με το classname. Η καλση σου εχει το ιδιο name σε server και client?
MeTaXaS4 Δημοσ. 17 Αυγούστου 2013 Δημοσ. 17 Αυγούστου 2013 γιατί δεν τις κάνεις ίδιες; και τις 2 serializable και τις 2 με το ίδιο ID και για την εικόνα να χρησιμοποιήσεις byte[]?
Timonkaipumpa Δημοσ. 17 Αυγούστου 2013 Δημοσ. 17 Αυγούστου 2013 @thanosfotn Αυτό που είπε ο παπι... Οι κλάσεις είναι διαφορετικές. Δοκίμασε με ίδιες κλάσεις (και Serializable). Plus ότι έχεις ClassNotFoundException.
thanosfotn Δημοσ. 17 Αυγούστου 2013 Μέλος Δημοσ. 17 Αυγούστου 2013 Όλα οκ,έπρεπε να κάνω τις 2 κλάσεις ίδιες και Serializable και επίσης οι 2 κλάσεις να έχουν το ίδιο package. Τώρα δεν πετάει πλέον ClassNotFoundException.
Timonkaipumpa Δημοσ. 17 Αυγούστου 2013 Δημοσ. 17 Αυγούστου 2013 Και λογικά θα πρέπει να βρίσκεις ΠΟΛΥ απλή τη διαδικασία αποστολής object με το ObjectStream. Σωστά;
παπι Δημοσ. 17 Αυγούστου 2013 Δημοσ. 17 Αυγούστου 2013 Όλα οκ,έπρεπε να κάνω τις 2 κλάσεις ίδιες και Serializable και επίσης οι 2 κλάσεις να έχουν το ίδιο package. Τώρα δεν πετάει πλέον ClassNotFoundException. Την επομενη φορα οταν δεις το ClassNotFound, εχε το νου σου οτι τα classname σε αυτες τις γλωσσες συμπεριλαμβανουν και το packet/namespace.
thanosfotn Δημοσ. 18 Αυγούστου 2013 Μέλος Δημοσ. 18 Αυγούστου 2013 Και λογικά θα πρέπει να βρίσκεις ΠΟΛΥ απλή τη διαδικασία αποστολής object με το ObjectStream. Σωστά; Πραγματικά είναι πολύ απλή η διαδικασία,ετσι όπως το σκεφτόμουν πριν αρχίσω με την θεώρια των δικτύων που ήξερα μου φαινόταν αρκετά δύσκολο αλλα τελικά με την java γίνονται όλα εύκολα Το εχω φτάσει ενα βημα πιο πέρα μάλιστα και στέλνω πίνακα απο object και είναι πραγματικά πολύ εύκολο.
thanosfotn Δημοσ. 19 Αυγούστου 2013 Μέλος Δημοσ. 19 Αυγούστου 2013 Να σας ρωτησω και κάτι άλλο,ξεφεύγω βέβαια λίγο απο το θέμα αλλά σκέφτηκα να μην ανοίξω αλλο θέμα.Εχω μια βάση δεδομένων στο netbeans (java DB , που τρεχει με τον derby apache ) όταν όμως δημιουργώ το executable jar αρχειο του προγράμματος δεν μπορεί να συνδεθεί στην βάση δεδομένων αν είναι κλείστο το Netbeans(και δεν έχω κάνω connect χειροκίνητα στην βαση) και είναι λογικό. Πως γίνεται να κανω connect στην βαση απο την java ?? Είναι καλός τρόπος αυτός ή υπάρχει καλύτερος(με αάλλο τύπο βάσης δεδομένων) ?
MeTaXaS4 Δημοσ. 20 Αυγούστου 2013 Δημοσ. 20 Αυγούστου 2013 όταν κάνεις export και το τρέχεις, το τρέχεις από cmd να δεις τι μήνυμα σου βγάζει; πιθανόν φταίει ότι δεν έχεις στον dist φάκελο τον φάκελο της ΒΔ
thanosfotn Δημοσ. 20 Αυγούστου 2013 Μέλος Δημοσ. 20 Αυγούστου 2013 Ολα οκ,όρισα το Location της βασης δεδομένων να είναι μέσα στο φακέλο του project και τρέχει σωστά τωρά.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα