9.3.1 章の優先順位のセクションでは、最初に特殊なケースを適用し、次に一般的なケースを適用する必要があると述べています。
[General]
*.host[0].waitTime = 5ms # specifics come first
*.host[3].waitTime = 6ms
*.host[*].waitTime = 10ms # catch-all comes last
omnetpp.ini ファイルに次の行があります。
**.server[*].tcpApp[0].port = 1000
**.pods[0..1].**.server[*].tcpApp[0].port = 80
**.pods[2..3].**.server[*].tcpApp[0].port = 21
このコードは機能しますが、パラメーターをチェックすると、すべてのサーバーが 1000 になり、特別なケースの 80 と 21 ではありません。
**.pods[0..1].**.server[*].tcpApp[0].port = 80
**.pods[2..3].**.server[*].tcpApp[0].port = 21
**.server[*].tcpApp[0].port = 1000
それでも、これによりエラーが発生します。これは、サーバーが構築されている StandardHost モジュールの TCP モジュールでの null ポインター例外で構成されます。
ned ファイルでは、パラメーターは次のように宣言されています。
int port = default(1000); // port number to listen on
そのキャッチオール行をそのままにしておくと、エラーも発生します。最後の行を他の 2 行の上に置くだけで、シミュレーションを実行できます。
port パラメーターの例は、INET の TCPServerHostApp.ned にあります。サーバー上で実行する必要があるさまざまなサービスにさまざまなポートを割り当てたいと考えています。
これらのパラメーターを正しく適用するためのアドバイスは何ですか? パラメータを設定する方法にエラーがありますか、それとも初期化プロセス中に自分でポートを設定する必要がありますか (これは意味がありません)。
編集:カルマシステムでは、まだ質問に答えることができないため、問題の原因は次のとおりです。
さて、問題は別の場所にありました。connect(ipaddr, port) で新しいソケットを接続するときに、ジョブ要求メッセージから間違ったポートを取得しました。
トラフィック生成モジュールで、サーバーへの接続用に間違ったポートを読み取ったため、エラーが発生しました。これは、使用されているポートが常にデフォルト = 80 または 21 ではなく 1000 であったためです。
サーバーは 80 または 21 を予期していたため、ソケットがポート 1000 に接続しようとしたときにクラッシュが発生しました。