0

MantaRay JMS に問題があります。ネットワークでは自動検出が機能しないため、静的な世界地図を使用しています。10 を超えるピアがオフラインの場合、エラー4226が発生します。

問題は、Microsoft が Windows XP SP2 で 10 のハーフオープン接続の制限を設定したことです。MantaRay はすべてのピアに接続しようとし、多くの接続を開始します。最初の 10 回の接続は問題ありませんが、11 回目が開始すると、ソフトウェアは別の接続がタイムアウトするまで待機する必要があります。同じ PC 上のネットワークにアクセスしようとする他のプログラムはタイムアウトになります。

奇妙なことに、一部の PC では接続が 1 ~ 2 秒後にタイムアウトになり、問題の影響はほとんどありませんが、別の PC では 10 秒または 20 秒待たなければなりません。しかし、Microsoft によれば、デフォルトの TCP 接続タイムアウトを直接設定する方法はなく、他の要因 (ネットワーク スイッチ、ルーター、VPN など) が影響を与える可能性があります。

MantaRay のソース コードを見て、TCP 接続タイムアウトを設定する方法を見つけようとしましたが、MantaRay は「通常の」ソケットの代わりに SohetChannels を使用し、connect()メソッドにはタイムアウトがありません。何か不足していますか?

4

2 に答える 2

0

また、WinXP の TCP/IP 接続制限にパッチを適用することもできます...そのようなものを使用してもかまわない場合。パッチを提供するサイトがいくつかあります。Google で「winxp tcp 接続制限の変更」を検索するだけで、それらのほとんどが見つかります。ただし、これらのツールは自己責任で使用してください。その制限を回避するためにコードにパッチを適用することは、より良いアプローチです。

于 2010-02-16T15:45:17.493 に答える
0

問題が解決しました。

MantaRay 全体を、私が書いたはるかに単純な JMS プロバイダーに置き換えました。最初のテスト メッセージを UDP 経由で送信します。ピアは、この最初のメッセージが受信された後にのみ TCP 接続を開くことができます。

このことから、オープンソース (GPL) ソフトウェアを使用する際には注意が必要であることがわかりました。

于 2011-06-24T06:57:37.507 に答える