私はこの問題に数年間取り組み、LAN ファックス製品を開発しました。あなたがうまくできるとは思えません。
仮想 COM ドライバーを開発するということは、カーネル ドライバーを開発することを意味します (市販のドライバーを購入できる場合を除きます)。あなたのしばらく)。
もう 1 つの問題は、さまざまな FAX モデムと FAX モデムの標準があることです (FaxMan をだますのに十分なものをエミュレートしたいとおっしゃっています)。
もう 1 つの (本質的な) 問題は、単純な (非エラー訂正) ファックス プロトコルが (ハード)リアルタイムプロトコルであることです。送信時にアンダーランしたり、受信時にオーバーランしたりする余裕はありません...つまり、このトラフィックを telnet 経由で (TCP タイマーとバッファを使用して) リダイレクトすると、最悪の場合 (FaxMan がタイムアウトします)、ファックス セッションが中断されるか、せいぜいテストは、実際の (エミュレートされていない) パフォーマンスを表すものではありません。
とにかく何をストレステストしようとしているのですか? アプリケーションですか、それともサードパーティの FaxMan ですか?
最も安価なソリューションと最も現実的なテストは、実際のハードウェア (実際の COM ポート、実際のファックス モデム、および実際の (またはシミュレートされた) 電話回線) を使用することをお勧めします。
編集して、マイケルの回答のコメントからの質問に回答します
データの転送が小さな問題であると仮定すると (たとえば、単純に 2 つのシリアル ポートを背中合わせに接続できるため)、ファックス モデムをエミュレートするソフトウェアを作成することは小さな問題でしょうか?
それは小さいかもしれません: 負荷テストが単に「ファックス データをビット バケットに送信する」だけの場合、エミュレートされたモデムはほとんどの場合、AT コマンドのように見えるあらゆるものに「OK」と応答する必要があります。ファックス固有の AT+F_whatever_ コマンド。しかし、これは非常に厳密なテストではなく、かなり忠実度の低いテストです。
それは非常に簡単ですが、FAX データの送信に関係するプロトコルはありませんか? それとも、プロトコルは AT コマンド セットの単なる変形であり、「OK」をスプーフィングするだけで十分ですか? 正直なところわかりませんが、もう少し複雑なプロトコルがあると思いました。
電話プロトコルには、「T.4」や「T.30」などの名前があります。PC-to-faxmodem プロトコルは、通常、「クラス 1 ファックス」または「クラス 2 ファックス」と呼ばれるプロトコルです。後者 (「クラス 2」または「クラス 2.0」) は 2 つの上位レベルです: より多くの ASCII データとより少ないバイナリ データであり、タイミングにそれほど敏感ではありません (クラス 1 は数十ミリ秒の iirc に敏感です)。クラス 1 よりも基本的な T.30 ネゴシエーションをラップします。これは、拡張 AT コマンド (つまり、AT+F_something_ コマンドとその応答) と、バイナリ エンコードされたファックス イメージ データのダンプで構成されます。
一部の応答は単なる「OK」ではありません (つまり、使用可能な/ネゴシエートされたファックス セッション パラメータを表します) が、(クラス 1 ではなくクラス 2 で) バイナリではなく ASCII でエンコードされているため、それほど難しくありません。 .
ある種の握手が必要ですよね?そうしないと、単純な古い FAX マシンが新しいページをロードするときに大量のデータを失う可能性があります。
はい、ページ間(つまり、各ページの前) にいくつかのハンドシェイク (「今送信してもよろしいですか?」)があります。タイミングをテストしていない負荷テスト エミュレーションは、「はい、先に進みます (ビット バケットにデータをダンプするだけなので、データを見ずにデータをダンプするだけなので、気にする必要はありません)」と応答するだけです。握手会。
エミュレーションは、PC-dumps-image-data-to-the-modem の最後に OK を返すために、<DLE><ETX>
とのバイナリ イメージ データ (PC から取得したもの) も監視する必要があります。<DLE><DLE>
FaxMan アプリケーションにどのようなタイマーが組み込まれているのかはわかりません (応答が異常に速いことに FaxMan が気付くのを防ぐために、エミュレートされた応答に人為的な遅延を追加する必要があるかどうか)。
ページ内でハンドシェイクがある場合とない場合があります。
- 古いファックス機/ファックスプロトコルでは、そうではありません。代わりに、デバイスはページの前にボーレートを含む「ファックスセッションパラメータ」をネゴシエートします。両端がサポートできる同期ボーレートをネゴシエートします。それ(ページ全体のデータを同期的に処理する機能)は、それがハードリアルタイムプロトコルである理由の一部です.
- 新しいファックス機/ファックス プロトコルは、各ページ内で「エラー訂正」をサポートします。ページは、より小さい (ただし、同期している) チャンクで送信されます。各チャンクは確認応答されるか、NAK されて再送信されます。