0
iOSアプリケーションからJmDNSを使用しているJavaベースのサーバーが見つかりました。Bonjourネットワークからホスト名を解決する
発見は正常に動作し、これは、詳細を記録するためにNetServiceDelegateによって実行されるコールバックです:
public func netServiceDidResolveAddress(_ service: NetService) {
guard let hostName = service.hostName else {
return
}
mockServerUrl = "http://\(hostName):\(service.port)/analytics"
Logger.log("Using mock server at \(mockServerUrl)", forLevel: .info)
}
これは、このように見えるURLになり: http://az-mbp-ether-lan.local.:9090
今、私は誓いますこれはうまくいきましたが、Alamofireでこのエンドポイントにデータを送信しようとすると、一貫してタイムアウトします。
ホスト名をターゲットマシンのハードコードされたIPアドレスに置き換えると、再び動作するため、データを送信するコードには根本的な問題はありません。
".local"で終わる上のフォームのアドレスが必要ですか?ターゲットサーバと同じネットワーク上のiOSデバイスから解決できますか?
デリゲートメソッドを 'netServiceDidResolveAddres'は、IPv4アドレスとIPv6アドレスを解決するためのものです。 'didFindService'の後に変更されないホスト名に関しては何の効果もありません。 – vadian
アドレスフィールドに戻ったアドレスを調べると、電話機からサーバーへの接続には役に立たないと思われる「127.0.0.1」であることがわかりました。 – zorro2b
'struct sockaddr'オブジェクトを含む'(NS)Data'オブジェクトの配列である 'netServiceDidResolveAddress'メソッドの' addresses'配列からIPV4またはIPv6アドレスを抽出する必要があります。 – vadian