كيف أفتح مأخذ توصيل UDP لمجموعة متعددة مع كيو تي؟
-
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 وفقا لقواعد جدول التوجيه.
لا تنتمي إلى StackOverflow