私は、同じPC上の複数のサーバーをシミュレートするTIdTCPServerを使用してDelphiでテストサーバープログラムを作成しました。これは、呼び出しIdTCPServer1.Bindings.Addによってバインドに複数のポートを追加します。これはうまくいく。ソケットエラーをシミュレートする方法
しかし、私はまた、クライアントにソケットエラーを返さなければならないポートに対して、ネットワークの接続されていないエラーをシミュレートしたいと思っています。私はそのポート用のBindings.Deleteを試してみましたが、CloseSocketを試しましたが、成功しませんでした。ポートを無効にしたり削除したりして、そのエラーをシミュレートする方法に関するアイデアはありますか?
私はあなたがサーバーコンポーネントを解放することができますが、それはそれを行うにはかなり汚い方法だと思います。 –
何も送信しないことで読み取りタイムアウトが発生する可能性があります.SO_LINGERをゼロタイムアウトでオンに設定してソケットを閉じることで接続をリセットすることはできますが、ケーブル引き込みやルータの停止をシミュレートすることはできません。 – EJP
ネットワークの損失や接続の喪失をシミュレートするときに、ポートまたはIPアドレスの範囲をブロックするようにファイアウォールルールを設定します。 – selbie