0 支持
(120 ポイント)

サーバー接続が成功した後、数秒後にタイムアウトします。

毎回発生するというわけではなく、たまにタイムアウトします。

原因や解決策がおわかりの方がいらっしゃいましたら、ぜひ教えていただきたいです。

環境は以下の通りです。

 Monobit Unity Networking ver2.9.0(MunTestServer)

 Unity 2021.3.8f1 Personal

 Visual Studio 2022 Community

 Windows10 64bit

コードは以下の通りです。

 // 自動的にロビーに参加

 MonobitNetwork.autoJoinLobby = true;

 //接続

 bool isConnect = MonobitNetwork.ConnectServer(_ServerName); // _ServerNameはstring型のサーバー名

上記コードを実行した後、isConnectにはtrueが返ってきますが、その後数秒すると、

 Error from mun_resolver_server. status=CONNECT_TIMEOUT(MRS_CONNECT_TIMEOUT: Connect timeout)

 UnityEngine.Debug:LogError (object)

 Mrs:mrs_console_log (Mrs/MrsLogLevel,string)

 Mrs:mrs_output_log (Mrs/MrsLogLevel,string)

 Mrs:MRS_LOG_ERR (string,object[])

 mun.MunLogger:MRSEXT_LOG_ERR (string,object[])

 mun.MunClientSessionToResolverServer:OnErrorCallback (intptr,intptr,Mrs/MrsConnectionError)

 mun.MunClient:FixedUpdate ()

が出てタイムアウトしてしまいます。

何卒、ご協力お願い致します。

回答 1

0 支持
(3.9k ポイント)
以下の質問に答えてください
1. MUNに同梱されてるサンプルプログラムでは正常に接続できていますか?
2. MonobitServerSettings.asset の設定項目をすべて列挙してください
3. サーバ接続処理を行っているクラス・メソッドも含めて列挙してください
4. _ServerName にはどんな値が含まれていますか?
  また任意の文字列(例えば "sample001")をそのまま ConnectServer() に設定した場合にどうなりますか?
5. ConnectServer() の戻り値 isConnect に依存したプログラムを動作させている場合、isConnect の使用を止め、代わりに MonobitNetwork.isConnect を使用した場合にはどうなりますか?
(120 ポイント)
ご返信ありがとうございます。

各質問の回答は以下の通りです。

1.同様にError from mun_resolver_server. status=CONNECT_TIMEOUT(MRS_CONNECT_TIMEOUT: Connect timeout)が発生しました。

2.
・HostType 「MunTestServer」
・Protocol 「UDP」
・Type 「None」
・Send(ObjectStream) 「2147483647」
・Send(RPC) 「2147483647」
・Receive(All) 「4294967295」
・ServerConnect 「1000」
・KeepAlive 「10000」

3.MonobitEngine.MonoBehaviourを継承したクラスのStart関数内で先程のコードを実行しているだけですので、省かせていただきます。

4._ServerName(string型)には"misomiso12345"が入っています。任意の文字列をそのまま設定しましたが、同様にタイムアウトが出ました。

5.依存していません。

お手数をおかけしますが、何卒よろしくお願い致します。
(3.9k ポイント)
編集
自分の手持ちのUnity2022+UDP接続する限りでは正常に接続できているので、同梱サンプルでも接続エラーが帰ってきているということはおそらく通信環境だと思います。(質問内容では「毎回発生するというわけではなく、たまに」と記されていますが、TCP接続と違いUDP接続の場合接続確立は行わないため、「常に失敗しているが、エラー検知が遅い」状態になっているのだと思います)

まずは以下の点を確認してみてください

1. 接続プロトコルをUDPからTCPに切り替えたときに接続可能か確認してみてください。

2. ルータ/ONU等で https://www.monobitengine.com/doc/mun/contents/Introduction/PortNumber.htm#ver.2.7.x に記載されているUDPポートが開放してるかどうか確認し、開放されていないようであれば開放してください。

3.  お使いの通信環境で多重NAT構成になっているなど、UDP接続に支障がでるネットワーク構成になっている可能性があります。外部サイトの情報にはなりますが、以下のサイトなどを参考にネットワーク環境を見直してみてください
https://naruhodo-wifi.com/nat_type/
(120 ポイント)
ご返信ありがとうございます。

先程回答した後、MonobitServerSettings.assetの設定項目「ServerConnect」について違和感を感じたため念のため調べて見ると,こちら( https://www.monobitengine.com/doc/mun/contents/SetupClient/MonobitServerSettings.htm#Time%20Settings%20%E3%81%AE%E9%A0%85%E7%9B%AE%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 )に「Server Connect の設定値は、MUNサーバに接続を試みてから、実際に接続成功待ちを行なう待機時間です。」と記載されていました。

試しに現在設定している「1000」ミリ秒から「10000」ミリ秒に変更したところ、このタイムアウトが発生しなくなりましたので、接続成功待ちの待機時間が短かったことが原因だったのだと思います。

お手数をおかけしまして申し訳ありませんでした。ご回答ありがとうございました。
(3.9k ポイント)
なるほど。タイムアウトまでの時間が短すぎたということですね
解決したようでなによりです
...