0

나는 도달 가능성에 대해 이야기하지 않습니다.NSURLSession 연결에 특정 네트워크 인터페이스를 선택하는 방법은 무엇입니까?

내가 말하는 것은 셀룰러 인터페이스를 통해 iOS 기기에서 네트워크 연결을 만드는 방법을 알아내는 것입니다.

왜? 장치가 WiFi 액세스 포인트에 연결되어 WiFi를 선택하는 조건이 있기 때문에 ... 그러나 액세스 포인트는 인터넷에 연결되어 있지 않으며 아무데도 가지 않습니다. 나는 전달하기 위해 모든 노력을 기울여야하는 데이터가 있으며, 일부 경우에는 Wi-Fi 게이트웨이에서 연옥으로 길을 잃어 가고 있습니다. Reachability를 사용하고 MPTCP에 의존하는 두 가지 경우에서, Apple은 이미 스택에서 WiFi를 우선시했습니다.

나는 NSURLSessionConfiguration이 세포에 대한 액세스를 허용 allowsCellularAccess 에 설정할 수 있습니다 알고있다 - 나는 을 찾고 있어요 필요한 라우팅을위한 세포.

는 심지어 CFNetwork 수준에서 나는 kCFStreamPropertyNoCellular 해제
휴대 에, 상태 kCFStreamPropertyConnectionIsCellular 찾고 있어요.

어쨌든 휴대 전화 라디오를 선호하지 않습니다. 필자는 애플이 와이파이를 선호하는 방향으로 나아 갔다는 것을 알고 있으며, 필자는이 문제에 대한 답을 찾는 데 어려움을 겪고있다.

저는 이것을 코코아 수준으로 유지하고 싶습니다.하지만 기초 수준이나 더 깊은 수준으로 들어가는 것에 반대하지는 않습니다. 나는 셀룰러 인터페이스가 무엇인지 알아 내기 위해 인터페이스 테이블 (심지어 액세스 할 수있는 경우)을 구문 분석하지 않으려합니다.

Wi-Fi에도 불구하고 누구나 셀룰러 링크를 통해 네트워크 연결을 만들었습니까?

일부 구성은 Multipath TCP입니까?

답변

0

특정 인터페이스에 바인딩하려면, 알고있는 한, 원시 소켓 수준까지 내려야 만합니다. 따라서 NSURLSession 용도로 사용자 정의 소켓을 제공 할 방법이 없으므로 기본적으로 처음부터 다시 작성합니다. NSURLSession을 소스 IP에 바인딩하는 것에 대한 지원을 요청하는 버그를 제기해야합니다.

발생하는 문제는 iOS 및 연결이 끊어진 네트워크의 알려진 문제입니다. iOS 9 이상은 더 나은 일을하지만 그때도 문제가 될 수 있습니다. 때때로 장치는 Wi-Fi 네트워크와 통신을 거부하고 때로는 셀룰러 네트워크와 통신을 거부합니다. 특히 두 신호가 약하면 크게 실패한 것 같습니다. 바로 오늘 아침, 실제로 iPhone (iOS 10)이 단절된 Wi-Fi 네트워크와 Airplane 모드를 연결하고 Wi-Fi 만 사용하도록 설정해야했습니다.

라우터 광고를 제공하지 않도록 네트워크 DHCP 서버를 구성하여이 문제를 해결할 수 있다고 들었습니다. 즉, 시도 할 때마다 iOS 기기가 계속해서 쿠폰을 반복적으로 요청할 것이라고 말했습니다. 어쩌면 그 버그가 어느 시점에서 고쳐 졌을 수도 있습니다. 그렇다면 촬영 가치가있을 수 있지만 이전 버전의 iOS에서는 작동하지 않을 것으로 예상됩니다.

iOS 3 이전 버전에서 웹 브라우저를 지원할 필요가 없다고 가정하면 해당 Wi-Fi 네트워크의 DHCP 서버를 완전히 제거하고 zero-conf IP로 DNS 서비스 검색에만 의존 할 수 있습니다 . 그러면 장치는 라우터를 보지 못하며 링크 로컬 IP를 제외하고는 해당 인터페이스 외부로 데이터를 보내려고 시도하지 않습니다.

어떤 이유로 든 가능하지 않은 경우 일반적으로 libcurl의 사용자 정의 사본을 사용하는 것이 좋습니다. 단, POSIX 네트워킹이 셀 방식 하드웨어를 작동시키지 않으므로이 방법이 사용자의 경우에는 작동하지 않을 수도 있습니다.

+0

좋은 정보 - 나쁜 소식에도 불구하고. 내 특별한 경우에 WiFi 신호가 강하고 SSID를 알리는 데 필요합니다. 또한이 대역폭을 생성하는 액세스 포인트의 아웃 바운드 측을 차단해야하는 조건이 있습니다. 이러한 조건이 제거되면 액세스 포인트가 인터넷에 다시 열립니다. "WiFi Assist"가 도움이된다고 들었습니다. 아마도 타임 아웃 임계 값을 낮추기 위해 조정 된 NSURLSessionConfiguration이 셀룰러 "보조"로 롤오버 할 수 있습니다. – Thompsonian