Tôi có mã cho phép tôi xác định địa chỉ MAC và địa chỉ IP của kết nối WiFi trên iPhone, nhưng tôi không thể tìm ra cách lấy Subnet Mask và địa chỉ Router sự kết nối. Có ai có thể chỉ cho tôi đi đúng hướng không?Mặt nạ mạng và mặt nạ mạng WiFi của iPhone
11
A
Trả lời
13
Bạn có thể nhận thông tin đó bằng cách gọi getifaddrs. (Tôi sử dụng chức năng này trong một ứng dụng của tôi để tìm ra địa chỉ IP của iPhone.)
struct ifaddrs *ifa = NULL, *ifList;
getifaddrs(&ifList); // should check for errors
for (ifa = ifList; ifa != NULL; ifa = ifa->ifa_next) {
ifa->ifa_addr // interface address
ifa->ifa_netmask // subnet mask
ifa->ifa_dstaddr // broadcast address, NOT router address
}
freeifaddrs(ifList); // clean up after yourself
Điều này mang lại cho bạn mặt nạ mạng con; cho the router address, see this question.
Đây là tất cả các công cụ mạng UNIX cũ, bạn sẽ phải chọn giao diện nào là kết nối WiFi (các công cụ khác như giao diện loopback cũng có trong đó). Sau đó, bạn có thể phải sử dụng các hàm như inet_ntoa() tùy thuộc vào định dạng bạn muốn đọc địa chỉ IP. Nó không tệ, chỉ tẻ nhạt và xấu xí. Chúc vui vẻ!
3
NSString *address = @"error";
NSString *netmask = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
// retrieve the current interfaces - returns 0 on success
success = getifaddrs(&interfaces);
if (success == 0)
{
// Loop through linked list of interfaces
temp_addr = interfaces;
while(temp_addr != NULL)
{
if(temp_addr->ifa_addr->sa_family == AF_INET)
{
// Check if interface is en0 which is the wifi connection on the iPhone
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"])
{
// Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
netmask = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
// Free memory
freeifaddrs(interfaces);
NSLog(@"address %@", address);
NSLog(@"netmask %@", netmask);
Các vấn đề liên quan
- 1. Tác dụng của việc đặt mặt nạ mạng là gì?
- 2. Sử dụng mặt nạ mạng con không thông thường
- 3. Chuyển đổi địa chỉ CIDR thành mặt nạ mạng con và địa chỉ mạng
- 4. nếu (mặt nạ & VALUE) hoặc nếu ((mặt nạ & VALUE) == VALUE)?
- 5. đeo mặt nạ UIImage
- 6. OpenCV bitwise_and + mặt nạ
- 7. có mã nào cho địa chỉ bitwise và ipv6 và mặt nạ mạng (tiền tố) không?
- 8. Mặt nạ dốc trên UIView
- 9. Phạm vi tính toán của IP từ mặt nạ mạng con
- 10. Sử dụng SQL để xác định giá trị cidr của mặt nạ mạng con
- 11. Imagick: soạn với mặt nạ
- 12. Thêm mặt nạ với CALayers
- 13. OpenCV: Đảo ngược mặt nạ?
- 14. Với IP và mặt nạ mạng, làm thế nào tôi có thể tính địa chỉ mạng bằng bash?
- 15. Bit mặt nạ bằng Python
- 16. Mặt nạ bitfield trong C
- 17. WPF Chỉnh sửa mặt nạ
- 18. Mặt nạ QLineEdit văn bản
- 19. iPhone Cocos2d - Đoạn clip/mặt nạ/khung hình Sprite
- 20. Cách nhận mặt nạ mạng con bằng cách sử dụng .net?
- 21. iOS: Tạo một mặt nạ thả xuống một mặt
- 22. Áp dụng "mặt nạ" cho một chuỗi
- 23. Nhận UIBezierpath từ mặt nạ một UIImage
- 24. Mặt nạ trong khung WebSocket là gì?
- 25. Stroke đeo mặt nạ CALayer trong iOS
- 26. SciPy Tạo Mặt nạ đa giác 2D
- 27. Mặt nạ đảo ngược iOS trong drawRect
- 28. Cách sử dụng mặt nạ với QPainter?
- 29. Mặt nạ CSS trong Internet Explorer 10
- 30. Mặt nạ không hoạt động trong Gecko
Hiện tại tôi đang xem ICMP (yêu cầu bộ định tuyến) hoặc ICMP (yêu cầu echo, 1 hop, xem ai trả lời). Tôi không nghĩ rằng bộ định tuyến của tôi phản hồi yêu cầu ICMP của bộ định tuyến; phương pháp thứ hai là cách traceroute hoạt động (tôi tin). Một tùy chọn khác sẽ là một DHCP API (không thể tìm thấy một trên Iphone) hoặc gửi gói tin DHCP cho thông tin (vì trong trường hợp của tôi sẽ luôn có DHCP và router luôn là máy chủ DHCP). – Bill
FYI - Ứng dụng iPhone được thiết kế để kiểm soát các chính sách bảo mật/truy cập trên các bộ định tuyến DL Home Home NAT (giao diện Web là một cơn đau để sử dụng); Tôi chỉ đơn giản là cố gắng tránh làm cho người dùng gõ vào địa chỉ của router. Họ sẽ phải cung cấp mật khẩu, do đó, không có vấn đề lớn nếu tôi không thể tìm thấy một giải pháp tốt ở đây. – Bill
@bvanderw - bạn có thể đăng liên kết tới mã của bạn hoặc tài liệu để xác định địa chỉ MAC của kết nối WiFi không? Tôi đã không thể theo dõi nó xuống. – Ciaran