3

ローカルホスト上のすべてに対して404を返す脳死したHTTPサーバーを作成する必要があります。具体的には、サーバーを呼び出す受け入れテストハーネスの下にプログラムがありますが、テストのために、その無関係なチェックをスキップすることで時間を節約したいと思います。

プログラムがテストハーネスの一部として使用するURLを渡す方法があり、テストハーネスは(現在)ポート80にそのようなサーバーを作成するだけです。

ただし、複数のテストを同時に実行しようとすると、各テストハーネスがポート80でHTTPサーバーを作成しようとするため、問題が発生します。これは、ハーネスの1つで失敗します。

したがって、HTTPサーバーを作成する前に、ポートをランダム化し、使用可能であることを確認したいと思います。そのポートが使用されているかどうかを確認するにはどうすればよいですか?

4

4 に答える 4

11

ソケットをポート0にバインドすると、システムは1024〜5000の使用可能なポートを選択します。

Socket.LocalEndPoint後で、その割り当てられたポートをプロパティで知ることができます。

于 2010-08-06T17:01:44.743 に答える
1

私は答えが明白だと思っていたでしょう:ソケットリッスンが失敗した場合、それは利用できません:別のものを選択してください。例外を聞いてください。

于 2010-08-06T17:00:54.683 に答える
0

実際にサーバーやネットワーク接続をまったく必要としないように、リクエストを完全にモックアウトしてみませんか?

これにより、テストの脆弱性が大幅に低下します。

いずれにせよ、事前定義された範囲でランダムなポートを生成し、その上にサーバーをセットアップしてみることはできませんか?すでに占有されている場合は、例外がスローされます。

于 2010-08-06T16:58:32.890 に答える
-1
Socket.Select()

ちゃんと覚えたら

于 2010-08-06T17:01:38.893 に答える