Προβλημα με MulticastSocket στη Java
- cyberpython
- Mbyte level
- Posts: 654
- Joined: Wed Nov 21, 2007 8:18 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Αθηνα
- Contact:
Προβλημα με MulticastSocket στη Java
Προσπαθώ να φτιάξω ένα server που θα δέχεται πακέτα πολυεκπομπής, όμως όταν κατασκευάζω το MulticastSocket, όποιο port και να επιλέξω, όταν καλέσω τη μέθοδο getPort() του MulticastSocket δίνει πάντα -1 (δηλαδή η σύνδεση του socket απέτυχε).
Το περίεργο είναι οτι αν στείλο ένα μήνυμα από ένα client που τρέχει στο ίδιο μηχάνημα το λαμβάνει, αλλά αν το δοκιμάσω από διαφορετικό μηχάνημα στο τοπικό δίκτυο, τότε το μήνυμα δε φθάνει ποτέ.
Δοκιμαστικά, έγραψα ένα πρόγραμμα που κατασκεύαζε ServerSocket σε κάθε port ξεχωριστά (κάτι σαν port-scanner) για να δώ μήπως τρέχουν άλλοι servers στα ports που επιλέγω και δοκίμασα με μερικά από αυτά που ήταν ανοιχτά, αλλά πάλι τίποτα.
Έχει κανείς ιδέα τί κάνω λάθος;
(Επίσης έχω δοκιμάσει και διαφορετικές τιμές για το TTL του πακέτου που στέλνει ο client 0,1,32 αλλά χωρίς αποτέλεσμα)
Το περίεργο είναι οτι αν στείλο ένα μήνυμα από ένα client που τρέχει στο ίδιο μηχάνημα το λαμβάνει, αλλά αν το δοκιμάσω από διαφορετικό μηχάνημα στο τοπικό δίκτυο, τότε το μήνυμα δε φθάνει ποτέ.
Δοκιμαστικά, έγραψα ένα πρόγραμμα που κατασκεύαζε ServerSocket σε κάθε port ξεχωριστά (κάτι σαν port-scanner) για να δώ μήπως τρέχουν άλλοι servers στα ports που επιλέγω και δοκίμασα με μερικά από αυτά που ήταν ανοιχτά, αλλά πάλι τίποτα.
Έχει κανείς ιδέα τί κάνω λάθος;
(Επίσης έχω δοκιμάσει και διαφορετικές τιμές για το TTL του πακέτου που στέλνει ο client 0,1,32 αλλά χωρίς αποτέλεσμα)
- cyberpython
- Mbyte level
- Posts: 654
- Joined: Wed Nov 21, 2007 8:18 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Αθηνα
- Contact:
Να επισημάνω οτί το ίδιο συμβαίνει με όλα τα MulticastSockets και DatagramSockets που προσπαθώ να φτιάξω (πάντα επιστρέφουν port : -1).
----------------------
Βασικά βρήκα γιατί το port είναι -1. Για να πάρουμε τη θύρα στο τοπικό μηχάνημα καλούμε τη getLocalPort().
---------------------------
Λύση
Σε περίπτωση που και κάποιος άλλος αντιμετψπίσει το ίδιο πρόβλημα, η λύση είναι μόλις φτιάχνουμε ένα MulticastSocket να καλούμε τη setInterface() ή τη setNetworkInterface().
merged + edited by Punisher
----------------------
Βασικά βρήκα γιατί το port είναι -1. Για να πάρουμε τη θύρα στο τοπικό μηχάνημα καλούμε τη getLocalPort().
---------------------------
Λύση
Σε περίπτωση που και κάποιος άλλος αντιμετψπίσει το ίδιο πρόβλημα, η λύση είναι μόλις φτιάχνουμε ένα MulticastSocket να καλούμε τη setInterface() ή τη setNetworkInterface().
merged + edited by Punisher
- cyberpython
- Mbyte level
- Posts: 654
- Joined: Wed Nov 21, 2007 8:18 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Αθηνα
- Contact:
- HdkiLLeR
- Venus Project Founder
- Posts: 4356
- Joined: Tue Jan 27, 2004 4:41 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: New York, NY
- Contact:
Re: Προβλημα με MulticastSocket στη Java
Κάνε μια copy paste εδώ τον κώδικα σου, είναι πάρα πολοί οι λόγοι που μπορεί να παίζει κάτι τέτοιο.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------
"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie