Προβλημα με MulticastSocket στη Java

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
cyberpython
Mbyte level
Mbyte level
Posts: 654
Joined: Wed Nov 21, 2007 8:18 pm
Academic status: Alumnus/a
Gender:
Location: Αθηνα
Contact:

Προβλημα με MulticastSocket στη Java

Post by cyberpython » Tue Dec 18, 2007 3:58 pm

Προσπαθώ να φτιάξω ένα server που θα δέχεται πακέτα πολυεκπομπής, όμως όταν κατασκευάζω το MulticastSocket, όποιο port και να επιλέξω, όταν καλέσω τη μέθοδο getPort() του MulticastSocket δίνει πάντα -1 (δηλαδή η σύνδεση του socket απέτυχε).

Το περίεργο είναι οτι αν στείλο ένα μήνυμα από ένα client που τρέχει στο ίδιο μηχάνημα το λαμβάνει, αλλά αν το δοκιμάσω από διαφορετικό μηχάνημα στο τοπικό δίκτυο, τότε το μήνυμα δε φθάνει ποτέ.

Δοκιμαστικά, έγραψα ένα πρόγραμμα που κατασκεύαζε ServerSocket σε κάθε port ξεχωριστά (κάτι σαν port-scanner) για να δώ μήπως τρέχουν άλλοι servers στα ports που επιλέγω και δοκίμασα με μερικά από αυτά που ήταν ανοιχτά, αλλά πάλι τίποτα.

Έχει κανείς ιδέα τί κάνω λάθος;

(Επίσης έχω δοκιμάσει και διαφορετικές τιμές για το TTL του πακέτου που στέλνει ο client 0,1,32 αλλά χωρίς αποτέλεσμα)
User avatar
cyberpython
Mbyte level
Mbyte level
Posts: 654
Joined: Wed Nov 21, 2007 8:18 pm
Academic status: Alumnus/a
Gender:
Location: Αθηνα
Contact:

Post by cyberpython » Tue Dec 18, 2007 10:42 pm

Να επισημάνω οτί το ίδιο συμβαίνει με όλα τα MulticastSockets και DatagramSockets που προσπαθώ να φτιάξω (πάντα επιστρέφουν port : -1).

----------------------

Βασικά βρήκα γιατί το port είναι -1. Για να πάρουμε τη θύρα στο τοπικό μηχάνημα καλούμε τη getLocalPort().


---------------------------


Λύση
Σε περίπτωση που και κάποιος άλλος αντιμετψπίσει το ίδιο πρόβλημα, η λύση είναι μόλις φτιάχνουμε ένα MulticastSocket να καλούμε τη setInterface() ή τη setNetworkInterface().


merged + edited by Punisher
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

Post by tsilochr » Wed Dec 19, 2007 12:58 am

Τι ip δίνεις στο multicastSocket?
User avatar
cyberpython
Mbyte level
Mbyte level
Posts: 654
Joined: Wed Nov 21, 2007 8:18 pm
Academic status: Alumnus/a
Gender:
Location: Αθηνα
Contact:

Post by cyberpython » Wed Dec 19, 2007 2:12 am

Το IP δεν παίζει ρόλο, αρκεί να είναι class D - και εννοείται να στέλνουμε τα πακέτα στο ίδιο IP που έχουμε κάνει join αυτούς που θα τα παραλάβουν.
User avatar
tsilochr
Wow! Terabyte level
Wow! Terabyte level
Posts: 3246
Joined: Tue Mar 16, 2004 2:47 pm
Academic status: PhD
Gender:
Location: mm.aueb.gr
Contact:

Post by tsilochr » Wed Dec 19, 2007 7:11 am

οκ, απλά ήθελα να βεβαιωθώ ότι πετάς μια class D IP διεύθυνση. Αυτό με τη setInterface() ή τη setNetworkInterface() δεν το έχω χρησιμοποιήσει ποτέ.

ΥΓ. Plz, είναι η ΙΡ address
User avatar
HdkiLLeR
Venus Project Founder
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

Post by HdkiLLeR » Fri Dec 21, 2007 2:45 am

Κάνε μια 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
Post Reply

Return to “Προγραμματισμός”