2

Windows モバイル デバイスからデスクトップ上の CXF サービスに接続する、C# で記述されたその場しのぎの SOAP クライアントがあります。このデバイスが ActiveSync 経由で接続されると、RNDIS 接続用の仮想アダプターが作成されます。この仮想アダプタは、ゲートウェイ IP をホストに割り当てます169.254.2.2

ホスト名またはホストの IP を C# クライアントのアドレスとして設定して接続を試みると、すべてが完全に機能します。ただし、IP を RNDIS ゲートウェイ ( 169.254.2.2) に設定すると、サーバー側で定期的に接続が失われます。CXF サービスは接続を試行し続け、最終的には成功しますが、これにより接続が大幅に遅くなります。モバイル C# 側のログにはエラーは報告されておらず、CXF サーバーでのみ報告されています。

なぜこれが起こっているのか、誰にも手がかりがありますか? 169.254.2.2除外する前に、有効なエンドポイントとして使用できない可能性があると断言する必要があります。

ああ、それが役立つ場合に備えて、C# クライアントには169.254.2.1、ActiveSync 接続後に DHCP を介して IP が付与されます。

4

2 に答える 2

1

私の頭に浮かぶ最初の問題は、特に DCHP を使用していることを確認したとき、DHCP サーバーからの IP のリース時間が期限切れになり、CXF サーバーが DCHP サーバーが新しいリースを発行するのを待たなければならないことです。 .

IP が変更されないことがわかっている場合は DCHP リースを長くしてみてください。可能であれば静的 IP を使用してください。これにより、少なくともその障害点が取り除かれます。

于 2012-01-11T21:29:56.087 に答える
0

この原因はわかりましたが、これが問題であると他の誰かが推測できる方法があったとは思えないため、答えるのが残念です。

CXF サーバーにはInetAddress.getHostName()、C# クライアントから送信された要求に対して基本的に逆引き DNS ルックアップを行う呼び出しがあります。

ActiveSync IP アドレスを使用する場合、DNS に 169.254.2.1 のエントリがなかったので (もちろん)、Java クラスはメソッドがタイムアウトするまでハングアップしました (C# クライアントに応答を書き込むまでに約 20 秒かかりました)。 )。リクエストあたり 20 秒で、これにより大幅な速度低下と接続エラーが発生しました。

0.5 秒後に強制終了するエグゼキュータ スレッドに呼び出しを移動することで、これを修正しました。別スレッドだったので、スローダウンは無くなりました。それが終わってうれしいです!

于 2012-01-31T01:09:53.383 に答える