
初めてプラットフォームONC-RPC
にアプリケーションをデプロイします。プラットフォーム では何年も動作していました。Solaris x86
Solaris SPARC
奇妙な問題が発生しています。
メイン プロセスを開始すると、rpc プログラムが登録され、 で確認できますrpcinfo
。
536870992 1 tcp 0.0.0.0.76.169 - 500
プログラムのステータスを確認すると、次のエラーが表示されます:
rpcinfo -T tcp localhost 536870992
rpcinfo: RPC: Program not registered
別のプロセスを開始すると、以前の rpc プログラムの登録が解除されます。
これが私が見たものrpcinfo
program version netid address service owner
1073742167 1 tcp 0.0.0.0.79.169 - 500
536871232 4 tcp 0.0.0.0.80.169 - 500
0.0.0.0.76.169
何らかのアドレス競合があり、0.0.0.0.80.169
同じ最後のフィールドを共有しているのではないかと疑っています169
。
アドレスはどのように割り当てられ、誰が割り当てるのでしょうか?
その関連性は何ですか?
答え1
問題を発見しました。新しいx86
プラットフォームが原因で、エンディアンネスの問題が発生していました。システム レベルの RPC 構造からポートを設定/取得するときにと を
使用し、この問題を解決しました。これで、プログラムはポート マッパーに正常に登録されました。htons
ntohs