2010-06-18 11 views
7

पर पोर्टिंग गेटिफैडर्स मैं विंडोज़ में मैकॉक्स ऐप पोर्ट करने की कोशिश कर रहा हूं और मैं गेटिफैडर्स के आसपास एक समस्या के खिलाफ आया हूं। असल में विंडोज़ इसका समर्थन नहीं करता है। मैं इसे फिर से कार्यान्वित करने का प्रयास करने की कोशिश कर रहा हूं (AF_INET और AF_INET6 के लिए) लेकिन विंडोज़ पर "समतुल्य" कार्यक्षमता MacOSX समर्थन जैसी कुछ नहीं प्रतीत होती है।विन XP

क्या किसी ने पहले इस तरह के रूपांतरण किया है? यदि ऐसा है तो मैकोज़क्स की तरह इंटरफ़ेस जानकारी की रिपोर्ट करने के लिए विंडोज़ प्राप्त करने का एक अच्छा तरीका है?

उत्तर

12

विंडोज पर करीबी कार्यों GetAdaptersInfo और GetAdaptersAddresses हैं। एमएसडीएन दस्तावेज बहुत व्यापक है, इसलिए आपको अपनी हर चीज मिलनी चाहिए।

+0

हाँ मैंने उनको देखा। मैं थोड़ी अनिश्चित हूं कि उस जानकारी से आईपीवी 6 जोन इंडेक्स कैसे प्राप्त करें ... हालांकि मैं स्पष्ट रूप से याद कर सकता हूं। – Goz

1

शायद libpcap का win32 पोर्ट आपकी मदद कर सकता है?

(या libnet के बंदरगाह, यदि कोई है)

+0

चीयर्स मैं उसकी समीक्षा करेंगे :) – Goz

3

मैं इसे यहाँ किया है, आईपी संस्करण के रूप में शराब के लिए एक अलग संस्करण सहित नास्तिक दिनचर्या नहीं वर्तमान काम के रूप में उम्मीद,

http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/getifaddrs.c

LGPL 2.1 लाइसेंस

करना संपादित करें: शराब 1.3 आईपीवी 4 & आईपीवी 6 अनुकूल एपीआई के साथ आने वाले मुद्दों को हल करता है।

5

getifaddrs() एक पोर्टेबल समाधान नहीं है, इसलिए यदि आपको एकाधिक प्लेटफार्मों का समर्थन करने की आवश्यकता है, तो आपको getaddrinfo का उपयोग करने पर विचार करना चाहिए, जो पॉज़िक्स- और विंडोज-फ्रेंडली है। यह पहली नज़र में थोड़ा और जटिल है, लेकिन यह वास्तव में बुरा नहीं है। This SO question विषय पर कुछ अच्छे उत्तरों और लिंक हैं। (विशेष रूप से, Beej's page पर showip.c उदाहरण काफी उपयोगी है, और here एक Windows उदाहरण है; ध्यान दें कि यह शीर्ष पर एक #include <stdio.h> याद आ रही है, और Ws2_32.lib के खिलाफ लिंक करने के लिए सुनिश्चित करें।)

+0

डाउनवोट क्यों? मैं जानना बेहद उत्सुक हूं कि मैंने कुछ गलत या भ्रामक लिखा है या नहीं। – patrickvacek

+0

प्रश्न आईपी पते (एसएस) में होस्टनाम को हल करने के बारे में नहीं है। –

+0

@VasilyRedkin, क्या आपने लिंक प्राप्त किया है या 'getaddinfo' के लिए मैन पेज पढ़ा है? वह फ़ंक्शन होस्ट होस्ट को आईपी पते में अनुवाद नहीं करता है। इसका उपयोग नेटवर्क इंटरफ़ेस जानकारी की रिपोर्ट करने के लिए किया जा सकता है; जैसा कि मेरे उत्तर में बताया गया है, [बीज की नेटवर्किंग गाइड] (http://beej.us/guide/bgnet/output/html/multipage/syscalls.html#getaddrinfo) पर showip.c उदाहरण देखें। – patrickvacek