الحصول على عنوان IP للواجهة التي تلقت recvfrom () حزمة UDP (مايكروسوفت)

باستخدام recvfrom() على مأخذ توصيل منضمة إلى INADDR_ANY على كمبيوتر متعدد طرق Microsoft. عندما يحصل recvfrom() على حزمة UDP: كيف يمكنني العثور على الواجهة (IP) التي تلقت الحزمة؟

0
مايكروسوفت للكمبيوتر؟ هذه مجموعة واسعة من الاحتمالات ، وأنا أفترض ويندوز - ولكن لا يزال ، ما هو الإصدار؟ فوز 3.11 وويندوز 7 هي قليلاً مختلفة. أيضا ، ماذا حاولت؟ ما هي النتائج التي كنت تتوقعها؟ ماذا حصلت بدلا من ذلك؟
وأضاف المؤلف Piskvor, مصدر
- لسبب ما لا أستطيع تحرير المشاركة الأصلية - باستخدام recvfrom() من نظامي التشغيل Win2000 (لا أستطيع استخدام WSARecvMsg ()) إلى Win7 حتى الآن لم أتمكن من العثور على أي شيء للقيام بذلك
وأضاف المؤلف user664239, مصدر

1 إجابة

لا توجد طريقة لمعرفة عنوان IP الخاص بالاستلام عند ربط مأخذ استماع واحد بعدة عناوين IP. بدلا من ربط مأخذ واحد ل<�كود> INADDR_ANY </القانون>، يمكنك الاستعلام قائمة الجهاز من البرامج المتكاملة المحلية باستخدام <�كود> GetAdaptersInfo() </القانون> و/أو <�كود> GetAdapterAddresses() </القانون>، ثم قم بإنشاء مأخذ توصيل منفصل لكل IP. يمكنك استخدام <�كود> getsockname() </القانون> لمعرفة أي IP مأخذ معين لا بد أن، ولكن فقط عندما لا بد أن مأخذ توصيل لIP معين، المتكاملة لا متعددة.

0
وأضاف