2013-06-01 13 views
8

Giúp tôi hiểu những gì tôi thấy khi kiểm tra mã Khả năng hiển thị bằng cách sử dụng Điều hoà liên kết mạng. Đây là mã reachability vani tôi:Khả năng tiếp cận kiểm tra với Network Link Conditioner khi mất gói 100%: giúp tôi hiểu điều gì đang xảy ra

Reachability* wifiReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain]; 
NetworkStatus netStatus = [wifiReach currentReachabilityStatus]; 

switch (netStatus) 
{ 
    case NotReachable: 
    { 
     NSLog(@"Access Not Available"); 
     break; 
    } 

    case ReachableViaWWAN: 
    { 
     NSLog(@"Reachable WWAN"); 
     break; 
    } 
    case ReachableViaWiFi: 
    { 
     NSLog(@"Reachable WiFi"); 
     break; 
    } 
} 

Bây giờ, khi tôi kiểm tra mã này bằng cách sử dụng liên kết mạng Xả bằng cách sử dụng "100% Mất" cài sẵn - giá trị của netStatusReachableViaWWAN, mà tôi đã không hy vọng. Tôi đã đọc rất nhiều khiếu nại rằng Khả năng hiển thị không thực sự kiểm tra kết nối, thay vào đó nó kiểm tra khả năng kết nối tiềm năng. Vì vậy, đây là câu hỏi của tôi:

Giá trị đặt trước "100% Loss" có cho phép các yêu cầu DNS tới máy chủ Apple đi qua, nhưng không cho phép bất kỳ gói nào đi qua?

+1

Đối mặt với cùng một vấn đề ở đây - bạn có tìm thấy giải pháp không? – fatuhoku

+0

Cùng một vấn đề đối với mỗi người sử dụng để kiểm tra kết nối mạng bằng cách sử dụng Khả năng hiển thị. Đối với tôi cũng thế. – Sandy

Trả lời

1

Điều này có thể liên quan đến thực tế, Khả năng hiển thị không đảm bảo rằng gói có thể thực sự đến được máy chủ đích. Đó là về cấu hình mạng cục bộ (giao diện lên/xuống) và nếu nó có thể gửi gói tin.

Từ Apple SCNetworkReachability Reference:

Một máy chủ từ xa được coi là có thể truy cập khi một gói dữ liệu, gửi qua một ứng dụng vào ngăn xếp mạng, có thể để lại các thiết bị cục bộ. Khả năng hiển thị không đảm bảo rằng gói dữ liệu thực sự sẽ được máy chủ lưu trữ.

Vì vậy, nếu giao diện hết và Khả năng hiển thị có thể gửi gói, nó hài lòng và trả về trạng thái có thể truy cập.

Từ hướng dẫn phát triển của Apple Why Networking is hard:

Chú ý: Các API SCNetworkReachability không có ý định để sử dụng như một cơ chế preflight để xác định khả năng kết nối mạng. Bạn xác định kết nối mạng bằng cách cố gắng kết nối. Nếu kết nối không thành công, hãy tham khảo API SCNetworkReachability để giúp chẩn đoán nguyên nhân gây ra lỗi.

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