كيف أفتح مأخذ توصيل UDP لمجموعة متعددة مع كيو تي؟

StackOverflow https://stackoverflow.com/questions/1176978

  •  19-09-2019
  •  | 
  •  

سؤال

لدي سؤال حول مآخذ كيو تي وشبكة. إذا كان لدي جهاز كمبيوتر يعمل بعدة برامج تشغيل متعددة في شبكات مختلفة، فربما افتح مأخذ توصيل UDP لمجموعة متعددة في شبكة محول / عنوان IP محول معين.

على سبيل المثال: IP. 192.168.2.1 و 172.20.0.1 وأريد إنشاء مأخذ توصيل يتلقى حزم من مجموعة البث المتعدد 228.5.6.7 على ال 172.20.0.1 محول الشبكة.

هل كانت مفيدة؟

المحلول

يجب عليك تعيين ذلك في imr_interface كما هو موضح أدناه: (ربما تم ضبطه على INADDR_ANY حاليا)

struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr("228.5.6.7");
mreq.imr_interface.s_addr = inet_addr("172.20.0.1");// <---- right here
...
QSocketDevice* sdev = new QSocketDevice(QSocketDevice::Datagram);
...
setsockopt(sdev->socket(), IPPROTO_IP, IP_ADD_MEMBERSHIP,(const char *)&mreq, sizeof(struct ip_mreq));
...

نصائح أخرى

إذا كان مقبس الاستماع، فيمكنك استخدام ربط عنوان IP لربطه بعنوان IP محدد للاستماع إليه. إذا كان ذلك مأخذ توصيل عميل، فإن نظام التشغيل يدير الواجهة اليمنى لإنشاءه للوصول إلى عنوان IP وفقا لقواعد جدول التوجيه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top