ネットワークインターフェイスは、SIO_GET_INTERFACE_LIST制御コードでWSAIoctlによって返さどのように再注文します

StackOverflow https://stackoverflow.com/questions/1916452

  •  20-09-2019
  •  | 
  •  

質問

のWin32のWinSock WSAIoctl機能のSIO_GET_INTERFACE_LIST機能によって返されたネットワークインターフェイスの順序を決定する方法はありますか?

バックグラウンドます:

私たちは、Windows上でACE / TAO CORBAの実装を実行しているネームサービスは、クライアントが使用する必要がIIOP.NET CORBAの実装を使用して実装されていること、それに登録されているACE / TAOベースのサービスを持っている異種CORBAシステムを持っています。 IIOP.NETベースのクライアントは、別のWindowsマシン上にあります。 ACE / TAOマシンが複数のネットワーク・インターフェース(1つのみのクライアントマシンによってアクセス可能である)、従って、複数のIPアドレスを有している。

IIOP.NETクライアントは、ネームサービスに接続し、それを使用する必要があるが、それはプロキシを使用しようとすると、それが例外をスローすることを、登録したサーバーのCORBAオブジェクトへのプロキシを取得することができます。

デバッグを過ごしたあまりにも多くの時間をもとに、我々は問題がために尋ねられたときIIOP.NETのみネームサービスが返すCORBA IOR文字列の最初のIPアドレスに接続しようとするということであるという結論に達しましたサービス。 IOR文字列は、そのIPアドレス(複数可)を含む、オブジェクトの記述です。ほとんどのCORBAクライアントは、IOR文字列内のすべてのアドレスを使用してサーバーオブジェクトに接続しようとしますが、IIOP.NETはそれをしないように見えます。

IOR文字列を生成するACE / TAOコードは、ボックス上のネットワークインターフェイスのリストを返すように制御コードWSAIoctlとのWinSock SIO_GET_INTERFACE_LISTコマンドを使用し、次いで、IOR文字列にそれらをすべて加算します。問題はIIOP.NETクライアントはIPアドレスが、それは明らかに失敗し、決して使用しようとすることを使用してサーバーオブジェクトに接続しようとしたときに最初のIPアドレスは、そう、IIOPクライアントが使用するネットワーク上に存在しないものであるということです正しいIPアドレス。このようACE / TAOなどの他のCORBAクライアントは、すべてのIPアドレスを試してみないと、彼らはこの構成で動作します。

私はネットワーキング/ CORBAの神じゃないので、

、私はACE / TAOまたはIIOP.NETを変更しようとすることは現実的ではない、と私たちは、このシステムでは2、分離ネットワークを持っている理由を持っていますが、最初の場合、WSAIOCtlによって返されるデフォルトIPアドレスは、そのIPアドレスは、その後、IOR文字列の最初のIPアドレスになるとIIOP.NETが正常にそのIPアドレスを使用するので、問題を解決する顧客ニーズ、1でした。だから、異なる順序でネットワークインターフェイスを返すようにWSAIoctlを引き起こす信頼できる方法はありますか?私は残念ながら、この上のMSDNで文書化され何も表示されません。

おかげで、

デーブ

役に立ちましたか?

解決

私は解決策を発見し、他の誰がこの直面してくる場合には、私は答えを提供しています。 ACE / TAOのオーブは、あなたがWSAIoctlによって返された結果を上書きすることができますコマンドラインパラメータを持っています。コマンドラインパラメータは-ORBListenEndpointsであり、それはあなたがホスト名とIPアドレスのセミコロン区切りのリストを提供することができます。 Googleは-ORBListenEndpoints、あなたは正確な構文を見つけることができます。そのコマンドラインパラメータを受信ORBで初期化された任意のサーバーが指定されたエンドポイント(複数可)に耳を傾けます。私はこれをテストしてみた、それが動作します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top