Khi bạn nói "khung được sử dụng" ở đây, tôi giả sử bạn có nghĩa là NSURLSession
, NSURLConnection
, UIWebView
hoặc WKWebView
. Mỗi trong số đó là một tình huống hơi khác, nhưng trong tất cả chúng, câu trả lời là không thể trực tiếp (nhưng xem bên dưới; nó có thể gián tiếp). Bạn không có quyền truy cập vào các ổ cắm cơ bản mà bất kỳ người trong số họ sử dụng. Tất cả chúng đều sử dụng kết nối tổng hợp, điều này làm phức tạp đôi chút ngay cả khi bạn có thể lấy "ổ cắm". Và trong trường hợp của UIWebView
và WKWebView
, một yêu cầu duy nhất đến www.google.com
có thể tạo ra một số kết nối độc lập, mỗi kết nối có thể tương tác với một địa chỉ IP khác.
(Tôi rất thích thú với những gì bạn đang cố gắng làm. Do cân bằng tải, một địa chỉ IP không có nghĩa là một máy chủ đơn lẻ, vì vậy địa chỉ IP chỉ nhận dạng nhỏ hơn CNAME. reverse proxies ....)
Nếu bạn cần loại quyền truy cập này, bạn phải tự quản lý socket. Điều này thường có thể xảy ra với tất cả các hệ thống ngoại trừ WKWebView
. Tôi giả sử rằng bạn đã biết (hoặc có thể dễ dàng nghiên cứu) cách tạo ổ cắm và thực hiện HTTP bằng cách sử dụng CFSocket
và CFHTTPMessage
. Điều này được bao phủ rộng rãi trong CFNetwork Programming Guide. Nếu bạn đã tạo ổ cắm, bạn có thể sử dụng CFSocketCopyPeerAddress
để kiểm tra xem bạn thực sự kết nối với máy chủ nào. Đó là mảnh bạn muốn.
Do bạn có thể tạo loại ổ cắm này và tự quản lý nó, bạn có thể móc nó vào trình tải URL chính (trừ WKWebView
) sử dụng NSURLProtocol
. Xem Drop-in Offline Caching for UIWebView (and NSURLProtocol) để biết giới thiệu nhanh và một số mã mẫu. Bạn chỉ cần thực hiện yêu cầu và tự mình thực hiện yêu cầu với CFSocket
, mang lại cho bạn cơ hội để xem chính xác cổng bạn đã kết nối.
Nguồn
2015-07-20 13:21:35
http: // stackoverflow.com/questions/6807788/how-to-get-ip-address-of-iphone-programatically –
@SaurabhPrajapati tôi đã đọc bài đăng này, nhưng nó không phải là những gì tôi muốn, xin vui lòng tham khảo mô tả của tôi. Dù sao cũng cảm ơn bạn. – feihu