deno上で動作するデスクトップアプリを数種類作成して、必要に応じて起動させたり終了させたりしたい関係で、TCP接続に使えるポート番号を探すサンプルを先日作成しましたが、意図した通りの動作になっていませんでした。
具体的には、使用中のポート番号でのサーバ起動をトライしたタイミングでエラーが発生してしまうという状態でした。
上記の問題を解消したバージョンのサンプルが以下。
具体的には、使用中のポート番号でのサーバ起動をトライしたタイミングでエラーが発生してしまうという状態でした。
上記の問題を解消したバージョンのサンプルが以下。
他のプロセスで使用されているポート番号でのサーバ起動をトライすると、以下のように表示されます。
「try」で囲んでいるため、エラーが発生した場合は「catch{ ~ }」が実行されると思っていましたが、そのようには動作しませんでした。
仕方がないので、以下のようにしました。
- netstatコマンドを使って使用中のポート番号のリストを得る。
- findコマンドを使って上記のリストから、任意のポート番号を含む行を抽出する。
- 上記を行うバッチファイルを作成する。
- Deno.runで上記バッチファイルを実行して、標準出力を解釈してポート番号が使用中か否かを判定する。
上記赤字の問題については後日、別の投稿を作成します。
修正版のソースが以下。
修正版の実行結果。
49152~49153が使用中の状況で上記のサンプルを実行すると、以下のようになりますので、意図した通りの動作になっている事が確認できました。
うまくいくケースだけじゃなく、失敗する筈のケースも動作確認するべき…とは思っているのですが、忘れがちです…。反省。
0 件のコメント:
コメントを投稿