Java Serialization
Java Serialization
Υπάρχει τρόπος να συνδυάσω serialization αντικειμένων με UDP sockets; Δηλαδή θέλω να μεταφέρω μέσω UDP σειριακοποιημένα αντικείμενα, γίνεται;
Γενικά ξέρω ότι το serialization συνδέεται άμεσα με streaming, δηλαδή TCP, αλλά μήπως υπάρχει κάποιος έμμεσος τρόπος να το καταφέρω; Θέλω να συνδυάσω τα πλεονεκτήματα και των δύο σε ένα, αν είναι δυνατόν.
Γενικά ξέρω ότι το serialization συνδέεται άμεσα με streaming, δηλαδή TCP, αλλά μήπως υπάρχει κάποιος έμμεσος τρόπος να το καταφέρω; Θέλω να συνδυάσω τα πλεονεκτήματα και των δύο σε ένα, αν είναι δυνατόν.
Είμαι ένας μοναχικός cowboy...
- netharis
- Venus Former Team Member
- Posts: 1845
- Joined: Sun Jul 15, 2007 2:37 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Seattle, Washington
- Contact:
Re: Java Serialization
Αν κατάλαβα καλά τι θες να κάνεις, δεν πρέπει να είναι κάτι δύσκολο προγραμματιστικά.
Θα πρέπει να φτιάξεις το serialization στη μνήμη/αρχείο με κάποιο ByteOutputStream και στη συνέχεια μέσω του ObjectOutputStream, να τραβήξεις ένα byte array απο εκεί και να το στείλεις ως DatagramPacket.
Στο receive μέρος θα κάνεις κάτι αντίστοιχο με τα bytes που διάβασες απο το πακέτο, χρησιμοποιώντας ObjectInputStream και ByteInputStream.
Δεν εχω ασχοληθεί πολύ με UDP σε java, αλλά θα πρέπει λογικά να φτιάξεις κάποιο header, και να ελέγχεις τα πακέτα.
Πάντως αυτό που θες να κάνεις νομίζω γίνεται και με RMI.
Θα πρέπει να φτιάξεις το serialization στη μνήμη/αρχείο με κάποιο ByteOutputStream και στη συνέχεια μέσω του ObjectOutputStream, να τραβήξεις ένα byte array απο εκεί και να το στείλεις ως DatagramPacket.
Στο receive μέρος θα κάνεις κάτι αντίστοιχο με τα bytes που διάβασες απο το πακέτο, χρησιμοποιώντας ObjectInputStream και ByteInputStream.
Δεν εχω ασχοληθεί πολύ με UDP σε java, αλλά θα πρέπει λογικά να φτιάξεις κάποιο header, και να ελέγχεις τα πακέτα.
Πάντως αυτό που θες να κάνεις νομίζω γίνεται και με RMI.
Resistance is futile. Join the foss-side now!
"UNIX is very simple, it just needs a genius to understand its simplicity." - Dennis Ritchie
"The things that I want, by Max Payne. A smoke. A whiskey. For the sun to shine. I want to sleep, to forget. To change the past. Unlimited ammo and a license to kill. But right then, more than anything, I wanted her."
Re: Java Serialization
Ψάχνοντας το λίγο παραπάνω και μετά και από το post σου κατέληξα στο συμπέρασμα ότι μάλλον δε γίνεται αυτό που θέλω ή και να γίνεται είναι εντελώς ανούσιο γιατί ακριβώς το ίδιο πράγμα μπορεί να επιτευχθεί με πιο απλό τρόπο. Απλά ήθελα αν ήταν δυνατό να διαχειρίζομαι με αντικειμενοστρέφεια το πακέτο-μήνυμα που στέλνεται από έναν client σε ένα server.
Ευχαριστώ πάντως για την απάντηση.
Το πιο κοντινό που βρήκα στη java είναι η κλάση ByteArrayOutputStream. Λογικά σε αυτό αναφέρεσαι.netharis wrote: Θα πρέπει να φτιάξεις το serialization στη μνήμη/αρχείο με κάποιο ByteOutputStream
Απ' ό,τι φαίνεται δεν υπάρχει μέθοδος που να το κάνει αυτό αλλά έτσι κι αλλιώς και να γινόταν αυτός ο τρόπος "καταργεί" το serialization αφού δεν περνάει ως "αντικείμενο" μέσα από το socket αλλά ως bytes (εκτός κι αν δεν κατάλαβα κάτι καλά). Δηλαδή τελικά για να περάσει ένα byte[] απέναντι είναι ευκολότερο να κατασκευάσω ένα String, να το μετατρέψω σε bytes και να το στείλω απέναντι. Βέβαια αυτό είναι περιορισμός καθαρά UDP τώρα που το βλέπω αφού απαιτεί το packet να περιέχει οπωσδήποτε ένα byte[] ως δεδομένα.netharis wrote: και στη συνέχεια μέσω του ObjectOutputStream, να τραβήξεις ένα byte array απο εκεί και να το στείλεις ως DatagramPacket.
Μπα, δε θέλω να χρησιμοποιήσω RMI.netharis wrote: Πάντως αυτό που θες να κάνεις νομίζω γίνεται και με RMI.
Ευχαριστώ πάντως για την απάντηση.
Είμαι ένας μοναχικός cowboy...
- rigo
- Gbyte level
- Posts: 1160
- Joined: Wed Nov 02, 2005 10:54 am
- Academic status: Alumnus/a
- Gender: ♀
- Location: Amsterdam
Re: Java Serialization
^^ Εσύ το έχεις πάει πολύ μακριά, αρχίζω να νιώθω άσχημα!!
"Αλλού κοιμάται το κορμί, και αλλού η ψυχή ξυπνάει"
- netharis
- Venus Former Team Member
- Posts: 1845
- Joined: Sun Jul 15, 2007 2:37 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Seattle, Washington
- Contact:
Re: Java Serialization
Έτσι και αλλιώς ως bytes θα μεταφερθεί το αντικείμενο σου.
Σίγουρα μπορείς να φτιάξεις μία class για να "στέλνει" ένα αντικείμενο μέσω UDP όπως είπαμε.
Αυτό με δεδομένο το οτι χρησιμοποιείς την DatagramSocket.
Θα μπορείς να φτιάξεις ένα custom implementation του UDP, αλλά δεν νομίζω πως η Java είναι η κατάλληλη γλώσσα για κάτι τέτοιο.
Καλή επιτυχία ότι και να κάνεις
Σίγουρα μπορείς να φτιάξεις μία class για να "στέλνει" ένα αντικείμενο μέσω UDP όπως είπαμε.
Αυτό με δεδομένο το οτι χρησιμοποιείς την DatagramSocket.
Θα μπορείς να φτιάξεις ένα custom implementation του UDP, αλλά δεν νομίζω πως η Java είναι η κατάλληλη γλώσσα για κάτι τέτοιο.
Καλή επιτυχία ότι και να κάνεις
Resistance is futile. Join the foss-side now!
"UNIX is very simple, it just needs a genius to understand its simplicity." - Dennis Ritchie
"The things that I want, by Max Payne. A smoke. A whiskey. For the sun to shine. I want to sleep, to forget. To change the past. Unlimited ammo and a license to kill. But right then, more than anything, I wanted her."
Re: Java Serialization
Σωστό κι αυτό, αλλά για να κάνεις τις μετατροπές από object σε bytes και το αντίστροφο μάλλον δεν στέκει και πολύ σαν λογική και μάλλον χρειάζεται μια custom υλοποίηση για να πάρεις από το serialozed object bytes. Οπότε στην τελική μάλλον δυσκολεύει αντί να διευκολύνει το έργο αυτή η λογική. Από την αρχή "έμπαζε" λίγο αυτό που ήθελα να κάνω.netharis wrote:Έτσι και αλλιώς ως bytes θα μεταφερθεί το αντικείμενο σου.
Δεν είναι κάτι τρομερό. Απλά ήθελα με κάποιο τρόπο να φτιάξω τα δικά μου μηνύματα (και να μην στέλνω ένα απλό String μέσω του socket) ώστε να τα διαχειρίζεται ευκολότερα ο παραλήπτης, αποφεύγοντας παράλληλα να χρησιμοποιήσω tcp sockets γιατί μπορεί να υπάρχει συμφόρηση και καθυστέρηση στο δίκτυο με τις πολλές συνδέσεις.rigo wrote:^^ Εσύ το έχεις πάει πολύ μακριά, αρχίζω να νιώθω άσχημα!!
Μην βλέπεις τον τίτλο και τρομάζεις.
Είμαι ένας μοναχικός cowboy...
- tsilochr
- Wow! Terabyte level
- Posts: 3246
- Joined: Tue Mar 16, 2004 2:47 pm
- Academic status: PhD
- Gender: ♂
- Location: mm.aueb.gr
- Contact:
Re: Java Serialization
Luke, προσπαθώντας να κάνεις πιο "συμμαζεμένο" το κώδικα σου, είτε με java serialization είτε με udp wrappers (ή ό,τι άλλο πας να φτιάξεις), κινείσαι προς το RPC. Δεν ξέρω πόσο θες να επεκταθείς αλλά πηγαίνοντας προς αυτή την κατεύθυνση θα κουτουλήσεις στο RMI και (μιας και αυτή τη περίοδο είναι στα πάνω τους) στα XML Web Services. Μήπως να αφιέρωνες λίγο χαζεύοντας σε αυτές τις τεχνολογίες; Δεν είναι χαμένος κόπος