私は実際にNetwork.TestConnection()
がこの仕事のための適切なツールであるとは思わない。 the documentationによると、NATが動作していて、クライアントがIPで公開されているかどうかをテストするためのものだと思われますが、一般的なインターネット接続があるかどうかを確認してください。
solution that I found on Unity Answers(ユーザーpixel_fiend)は、Webサイトをテストして、ユーザーが接続しているかどうかを確認するだけです。
IEnumerator checkInternetConnection(Action<bool> action){
WWW www = new WWW("http://google.com");
yield return www;
if (www.error != null) {
action (false);
} else {
action (true);
}
}
void Start(){
StartCoroutine(checkInternetConnection((isConnected)=>{
// handle connection status here
}));
}
あなたが好きにウェブサイトを変更、あるいは変更することができます。このコードの1つの利点は、非同期操作のためIEnumerator
を使用するため、接続テストは、あなたのアプリケーションの残りの部分を保持していないということですいくつかのサイトのいずれかに到達可能な場合に成功を返すコード。 AFAIKは、インターネット上の特定のサイトに接続しようとすることなく真のインターネット接続をチェックする方法がないため、このような1つ以上のWebサイトを「ping」すると接続性を判断する上で最善の策になる可能性があります。
なぜ 'Network.TestConnection()'アプリケーションが失敗する原因でしょうか?少しのエラー処理が簡単にそれをキャッチするように思えます。 –
上記の「間違い」にpingのアプローチでリンクしてください。ネットワークを使用している場合、 – SimpleVar
@RonBeyer。TestConnection()を実行し、インターネット接続がない場合、アプリケーションは次の例外を除いて失敗します。 '接続テスターアドレスを解決できません。これを実行する前にインターネットに接続するか、アドレスをアクセス可能なものに設定する必要があります。私はcopeをhttp://docs.unity3d.com/ScriptReference/Network.TestConnection.htmlからコピーしました –