[Java] لا يمكن ربط عنوان البث في العميل - جافا / سكالا


Answers

لا يمكنك ربط عنوان البث. والسؤال لا معنى له. لا تحتاج إلى ربط على الإطلاق لإرسال، وتلقي يجب ربط إلى 0.0.0.0 في معظم الظروف.

Question

أنا أحاول أن أكتب بسيطة أودب نبضات القلب للبث على جميع عقد الاستماع على منفذ معين في جميع أنحاء الشبكة الفرعية بلدي.

أواجه مشكلة في إنشاء / ربط العميل داتاغرامزوكيت. أحاول شفرة مثل هذا:

// My IP is 192.168.201.57, so I'm using 192.168.201.255 for broadcast.  Right?
val socket = new DatagramSocket(9099, InetAddress.getByName("192.168.201.255"))

هذا ينتج استثناء: java.net.BindException: لا يمكن تعيين العنوان المطلوب.

لقد حاولت أيضا 255.255.255.255 مع نفس النتيجة. حاول أيضا شيء من هذا القبيل على أساس شيء قرأت في آخر آخر:

val socket = new DatagramSocket(null)
socket.bind( new InetSocketAddress(broadcastIp, port) )  // where I tried several broadcastIp values

كما أعطى هذا الاستثناء نفسه. وأود أيضا أن أضيف أن لقد حاولت قيم المنفذ مختلفة والتأكد من أي شيء آخر على الجهاز يستخدم المنافذ أحاول.