2010-06-18 29 views
7

Tôi đang cố gắng chuyển một ứng dụng MacOSX đến các cửa sổ và tôi đã gặp phải vấn đề xung quanh getifaddrs. Về cơ bản các cửa sổ không hỗ trợ nó. Tôi đang cố gắng tìm cách để thực hiện lại nó (đối với AF_INET và AF_INET6) nhưng chức năng "tương đương" trên các cửa sổ dường như không giống với sự hỗ trợ của MacOSX.Nhập getifaddrs để Win XP

Có ai đó đã thực hiện loại chuyển đổi này trước đây không? Nếu như vậy là có một cách tốt đẹp tôi có thể nhận được các cửa sổ để báo cáo cho tôi thông tin giao diện như MacOSX không?

Trả lời

12

Các chức năng gần nhất trên Windows là GetAdaptersInfoGetAdaptersAddresses. Các tài liệu MSDN là khá toàn diện, vì vậy bạn sẽ tìm thấy mọi thứ bạn cần.

+0

vâng tôi đã thấy chúng. Tôi hơi không chắc chắn làm thế nào để có được một chỉ số khu vực IPv6 từ thông tin đó mặc dù ... Tôi có thể đã bỏ lỡ mặc dù rõ ràng. – Goz

1

có thể cổng winpcap win32 có thể giúp bạn?

(hoặc cảng libnet, nếu có)

+0

Cheers tôi sẽ xem xét :) – Goz

5

getifaddrs() không phải là giải pháp di động, vì vậy nếu bạn cần hỗ trợ nhiều nền tảng, bạn nên cân nhắc sử dụng getaddrinfo, POSIX và thân thiện với Windows. Nó hơi phức tạp hơn trong nháy mắt đầu tiên, nhưng nó thực sự không phải là xấu. This SO question có một số câu trả lời hay và liên kết về chủ đề này. (Trong đó, showip.c dụ trên Beej's page là khá hữu ích, và here là một ví dụ Windows; lưu ý rằng nó thiếu một #include <stdio.h> ở phía trên, và hãy chắc chắn để liên kết chống lại Ws2_32.lib.)

+0

Tại sao lại là downvote? Tôi rất tò mò muốn biết nếu tôi đã viết một cái gì đó không chính xác hoặc gây hiểu lầm. – patrickvacek

+0

Câu hỏi không phải là giải quyết tên máy chủ thành địa chỉ IP. –

+0

@VasilyRedkin, bạn đã theo các liên kết hoặc đọc trang người đàn ông cho 'getaddinfo'? Hàm đó không chỉ dịch tên máy chủ thành địa chỉ IP. Nó có thể được sử dụng để báo cáo thông tin giao diện mạng; như đã đề cập trong câu trả lời của tôi, xem ví dụ showip.c trên [Hướng dẫn mạng của Beej] (http://beej.us/guide/bgnet/output/html/multipage/syscalls.html#getaddrinfo). – patrickvacek

Các vấn đề liên quan