none
モデム環境構築方法 RRS feed

  • 質問

  • ずいぶん昔の話ですが、2台のWindows PC(Windows98やWindowsNTなど)でCOMポートにRS232Cのケーブルで
    直結し、RS232Cのケーブルをモデムに見立てた設定をし、さらに両者間でダイアルアップの設定を
    することでTCP/IPの通信ができたのを憶えています。

    今時のPCにはCOMポートなどありませんので、物理的な理由からも実現は難しいとは思っている
    のですが、何らかの方法で最近のPCなおかつ最近のOSで同様のことができないものかと思っています。

    例えば、Hiper-V などで作成した2台の仮想マシンに仮想的なCOMポートやモデムを
    組み込めるのであればそれが実現できるのではないかとも思っています。

    要は、モデムやRS232Cケーブルなどの物理的な機器を用意することなく、全てをソフトウェア的な
    もので構築し、2つのWindowsマシン間でモデム接続させたいのです。

    このようなことを実際に試された方いらっしゃいましたら実現の可否や、構築方法を教えて
    ください。

    現在扱っているソフトウェアにモデム接続機能などを組み込む予定がありますが、
    機能の検討のため簡易にモデムの環境を構築する方法を知りたいと思ってます。

    よろしくお願いします。

    • 移動 星 睦美 2016年6月23日 2:51 Visual C++ から
    2016年6月22日 6:37

回答

  • 私の周辺ではシリアルポートはまだまだ現役なので、com0comを使って1台のPC上で仮想シリアルポートを使ってます。

    あとは以下のようにして接続できました。

    • 「コントロールパネル->電話とモデム->モデム->追加 とネットワーク->一覧->2台のコンピューター間の通信ケーブル」で仮想シリアルポートを選択
    • 「コントロールパネル->ネットワーク共有センター->アダプターの設定の変更->Alt+F->新しい着信接続->->ネットワークアダプタ->(ユーザー)->ダイアルアップモデム経由->(上記の通信ケーブルの片方を選択)->アクセスを許可」
    • 「ネットワーク共有センター->新しい接続またはネットワークのセットアップ->職場に接続->直接ダイヤル->ダイアルアップ->(上記の通信ケーブルのもう片方を選択)->電話番号は適当->接続->接続をセットアップ」
    • 「ネットワーク共有センター->アダプターの設定の変更->追加されたダイヤルアップ接続のプロパティ->電話番号を消すのとケーブルの構成で最高速度をチェック->OK->ダイアルアップ接続をダブルクリックして接続」

    #モデム自体をエミュレートしたいならシリアル通信でATコマンドに応答するようにすればいいのかな


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2016年6月23日 2:52
    • 回答としてマーク 星 睦美 2016年6月30日 7:05
    2016年6月22日 10:49

すべての返信

  • VirtualBox等の仮想化ソフトで、シリアルポートもエミュレーションできます。
    2台の物理PC間で通信するのは、設定が難しいと思いますが、
    仮想COMの接続をホストPCのファイルか何かにしておけば、
    ホスト-ゲスト間で通信可能です。
    テストできれば良ければ、PC2台は必ずしも必要ないかと。

    ちなみに、物理的にケーブルを使っても良いなら、USBシリアル変換使えばできます。


    • 編集済み Iwasy 2016年6月22日 7:32
    2016年6月22日 7:31
  • ご指摘の通り、現在のPCにはRS-232Cポートはありません。
    通常、RS-232C I/Fを持つ外部機器と接続する場合は、USBに接続するCOMケーブルと、
    付属する仮想COMポートドライバを使用します。
    これらの機器はほぼ絶滅しつつあり、今後新しく発売される機器がCOMポートを持つ可能性は無いと断言できます。
    従って、新しく作成されるアプリケーションが、COMポートをサポートするべき合理的な背景は見つかりません。

    次に、USB、Bluetooth、等は本質的に物理的外部機器との接続法であるため論外とすると、
    現在においては、複数のPCがコミュニケーションする一般的方法はLANでありTCP/IPです。
    以上を勘案すれば、たとえ2台のPC間の接続であっても、使用すべきインターフェースはTCP/IPであると結論できます。
    (もちろんUDPを排除するつもりはありまんが)

    また、TCP/IPを使用する限りにおいて、開発時のデバッグ用の通信相手としての物理的または、
    仮想的なPC又はOSは必要ありません。
    これは、TCP/IPにおいては通信の両端にサーバー側とクライアント側という区別があり、
    それらは同一PC、OS上でで共存できるからです。
    つまり、「サーバー機能」を持つアプリと「クライアント機能」を持つアプリを作成すれば良いわけですね。
    もちろん両機能を包含したアプリケーションを作成しても何の問題もありません。

    これらのアプリケーションは同じPC上で、同一のOS上で稼働し、TCP/IPを利用して通信することが可能です。
    この応用例として「名前付きパイプ」などがありますが、もちろん素のWinSockを使用するほうが、
    あとあとで応用がきくかもしれません。

    2016年6月22日 7:36
  • 私の周辺ではシリアルポートはまだまだ現役なので、com0comを使って1台のPC上で仮想シリアルポートを使ってます。

    あとは以下のようにして接続できました。

    • 「コントロールパネル->電話とモデム->モデム->追加 とネットワーク->一覧->2台のコンピューター間の通信ケーブル」で仮想シリアルポートを選択
    • 「コントロールパネル->ネットワーク共有センター->アダプターの設定の変更->Alt+F->新しい着信接続->->ネットワークアダプタ->(ユーザー)->ダイアルアップモデム経由->(上記の通信ケーブルの片方を選択)->アクセスを許可」
    • 「ネットワーク共有センター->新しい接続またはネットワークのセットアップ->職場に接続->直接ダイヤル->ダイアルアップ->(上記の通信ケーブルのもう片方を選択)->電話番号は適当->接続->接続をセットアップ」
    • 「ネットワーク共有センター->アダプターの設定の変更->追加されたダイヤルアップ接続のプロパティ->電話番号を消すのとケーブルの構成で最高速度をチェック->OK->ダイアルアップ接続をダブルクリックして接続」

    #モデム自体をエミュレートしたいならシリアル通信でATコマンドに応答するようにすればいいのかな


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答の候補に設定 星 睦美 2016年6月23日 2:52
    • 回答としてマーク 星 睦美 2016年6月30日 7:05
    2016年6月22日 10:49
  • ありがとうございました。とりあえずVMで仮想シリアルポートが作成でき、名前付きパイプで共有すると2台のVMからシリアルポートで通信できることがわかりました。

    後は、教えていただいた上の方法で、モデムの設定、ダイアルアップ接続の設定、着信接続の設定をやると、ダイアルアップ接続上でのTCP/IP通信ができました。

    大変助かりました。

    2016年6月23日 1:56
  • フォーラム オペレーターの星 睦美です。

    私のほうでgekka さんの返信を[回答の候補に設定] させていただきました。jo2015 さんから[回答としてマーク] いただけると回答者へのよいフィードバックになります。

    ※参考になった回答への[投票] は自身で投稿した質問以外のスレッドや、回答ではないけれども参考になった情報を含んでいるスレッドにお使いください。

    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2016年6月23日 2:57