سؤال

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

SOCKET s = socket(PF_UNSPEC, SOCK_RAW, ethernet_type);

Ethernet_Type هو شيء مخصص وغير قياسي، مثل 0xaaaa. أنا أستخدم htons (). أيضا، من الأفضل جدا بالنسبة لي ألا أستخدم WinPCAP.

الآن، أتلقى الخطأ 10043، البروتوكول غير المدعوم.

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

انها تقول:

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

هناك بعض المشكلات المختلفة هنا، لذلك إذا كان أي شخص لديه أي مدخلات على الإطلاق، فأنا أقدر ذلك حقا.

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

المحلول

وفق هؤلاء مقالات, ، أزلت Microsoft دعم المقبس الخام من Windows في الإصلاح العاجل غير قابل للإزالة. لذلك قد تكون محظوظا إلا إذا كنت ترغب في التبديل إلى نظام التشغيل آخر.

نصائح أخرى

أعتقد أن إضافة بروتوكولات جديدة إلى مكالمة المقبس ستكون صعبة للغاية. يجب عليك التأكد من أن المقبس يدعم هذه الاتصال. أعتقد أنك سيتعين عليك إعادة ترجمة وظيفة المقبس ولا أعتقد أنه من الممكن بسهولة تحت Windows.

لا تتطلب صياغة الحزم المخصصة لك إنشاء بروتوكول جديد

أعتقد أن الطريقة الصحيحة لتحديد المقبس الخام هو مثل هذا

SOCKET s;
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);

إذا كنت تحاول حقا أن تلعب مع إيثرنت RAW مثل أسماءك المتغيرة، فستكون كذلك استخدام برنامج تشغيل WINPCAP أو الكتابة سائق الخاص بك

لا أعتقد أن هناك حل آخر "سهل" للإيثرنت الخام. WinPcap سهل إلى حد ما لذا قد ترغب في التحقق من ذلك

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