سؤال
كيف أجد المسار MTU بين الاتصال؟ أحتاج إلى هذا لتحديد حجم حزمة اتصال UDP الخاص بي. هل هناك أشياء مثل اكتشاف المسار MTU في .NET؟
المحلول
مأخوذ من هنا:
لا يدعم Winsock الإبلاغ عن MTU المكتشفة ، على الرغم من أن مداخن TCP/IP الأخرى تفعل (على سبيل المثال AIX من خلال خيار Socket IP_GETPMTU). نظرًا لأن Winsock لا يمكن أن يبلغ عن أنه ، لا يمكن .NET توفير واجهة برمجة التطبيقات (والتي يجب أن تكون على رأس Winsock).
نصائح أخرى
لقد وجدت طريقة (حلول) للعثور على المسار MTU لـ UDP على C#. فقط حاول إرسال حزمة UDP باستخدام UDPClient.dontfragment إلى True. إذا كان يلقي استثناءً ، فقم بتقليل حجم الحزمة حتى لا يتم إلقاء استثناء. إذا كان أي شخص يرغب في رؤية بعض العينة ، فقط اسأل.
هل حاولت استخدام libpcap مع C#؟ هناك مكتبة تسمى SharppCap يمكنك استخدامها للعثور على PMTU.