7

こんにちは インターネットなしでダイヤル モデム経由でコンピュータに接続する方法はありますか? Windows のハイパー ターミナルのように。コンピュータ間でファイルを送信する接続を確立します。2 台のコンピュータ間を直接接続し、ファイルを送信するだけです。

4

5 に答える 5

5

はい。

モデムがシリアル ポート経由で接続されている (またはシリアル ポート経由で接続されていることをエミュレートしている) と仮定すると、1 つのモデムをセットアップして (ATコマンドを学習してください!) 着信を聞いて応答し、もう 1 つは最初にダイヤルする必要があります。

その後、ペアをかなり長いシリアル リンクとして扱うことができます。

しかし、すべてを確実に機能させることは、科学というよりも芸術であり、今日ほとんど行われていないため、その多くが忘れられています。私が最後にこの方法でモデムを扱ったのは、15 年以上前のことです。

于 2010-09-07T15:43:14.173 に答える
4

昔はヌルモデムケーブルを使っていました。昔は、そのように「ネットワーク化された」ゲームをしていました。

これは基本的に、受信ピンと送信ピンが交差配線された RS-232 ケーブルです。アダプターはまだいくつかあるので、手に入れるのはそれほど難しいことではありません。

かなり後になって、一部の人々がSLIP (Serial Line IP) を作成し、シリアル ラインが TCP/IP スタック全体のキャリアとして機能できるようにしました。少し後にPPPが改善として導入されました。SLIP はまだほとんどのプラットフォームで利用可能であり、PPP はダイヤルアップ インターネットを実行できるすべてのプラットフォームに存在すると思います。

したがって、質問が基本的に、他の誰かのダイヤルアップ サーバー (Earthlink など) を介さずに PPP 経由で 2 台のコンピューターをネットワーク化したいという場合は、2 台のマシンのうちの 1 台にPPP サーバーをインストールする必要があります。ほとんどの Linux ディストリビューションに付属しています。Windowsの場合は、見に行く必要があります。私は助けたいのですが、私の企業のブロッカーが再び過剰になっています。

于 2010-09-07T15:42:52.533 に答える
1

誰かがC#でXModem実装をここに書いています:http://trackday.cc/b2evo/blog2.php/2007/08/02/net-xmodemそれはあなたが求めているものに役立つかもしれません。

于 2010-09-07T15:35:51.660 に答える
1

あなたの質問から明確でないことの 1 つは、物理的に同じ場所にある 2 台のマシンをケーブルで直接接続しようとしているのか、それとも PSTN 経由で一方から他方にダイヤルインしようとしているのかということです。

それらが同じ場所にある場合は、式からモデムを削除してください。これにより、複雑さが大幅に軽減されます。

それらが別々の場所にある場合 (つまり、正直なダイヤルアップ接続でダイヤルしている場合)、役立つコードがいくつかあります。この記事では Bluetooth または GPRS モデムについて説明していますが、その核心は、AT コマンド セットと互換性のある任意のデバイスと通信するために使用できる AT コマンドの送信に関するものです。良い方向に向かわせてくれるかもしれません。

アップデート

http://msdn2.microsoft.com/en-us/system.io.ports.serialport(VS.80).aspxを参照してください。

内部モデムであっても、モデムは COM ポート (COM1 ~ COM12) に接続する必要があるため、.NET フレームワークの SerialPort クラスを使用して、ポートを開き、ATコマンドを送信するなどの操作を実行できるはずです。 XModem ライブラリを使用してファイルを転送したり、通常の通信にストレート シリアルを使用したりできます。

IP スタックが必要ですか、それとも単純なシリアル プロトコルに満足していますか?

于 2010-09-07T15:55:00.703 に答える
1

モデムの使用を必要とする Windows 内のダイヤルアップ ネットワーク接続を非常に簡単にセットアップできます (VPN をセットアップするためのオプションの下にありますが、ダイヤルアップのみに設定できます)。

そのため、ネットワークの場所を C# コードで使用できるようにマップできると思います。

すでに述べたように、少なくとも 1 つのモデムがオンになっていて、接続をリッスンしている必要があります。

* 編集 *

次のコードは、ネットワーク接続内に配置されたダイヤルアップ接続をトリガーすると思います

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(@"c:\Local Area Connection 2 - Shortcut");

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();

c:\ ドライブに配置され、「ローカル エリア接続 2 - ショートカット」という名前のリンクの場合

次に、宛先に ping を実行して、接続されているかどうかを確認できます。

最終的には、最善の解決策は RAS を使用することだと思います。

ここで Codeplex を見てください: DotRAS

その後、次のコードを使用できます。

RasDialer dialer = new RasDialer();

bool connected = false;
foreach (RasConnection connection in dialer.GetActiveConnections())
{
    if (connection.EntryName == "MyFriendsPC")
    {
        connected = true;
        break;
    }
}

if (!connected) {
    dialer.EntryName = "MyFriendsPC";
    dialer.Dial();

    // If you need to provide credentials, use the Dial(NetworkCredential) overload that's available.
}

この例では、既定の電話帳に MyFriendsPC という名前のエントリが既にあることを前提としています。この接続をプログラムで作成する必要がなく、作成する必要がない場合は、RasPhoneBook コンポーネントを使用できます。

RasPhoneBook pbk = new RasPhoneBook();
pbk.Open(); // This will open the phone book in the All Users profile.

RasEntry entry = new RasEntry("MyFriendsPC");

接続にデフォルト設定を使用したい場合は、RasEntry クラスの静的メソッドの 1 つを使用するか、ここで手動で接続を構成できます。

pbk.Entries.Add(entry);

エントリがコレクションに追加されると、すぐに電話帳に追加されます。

于 2010-09-07T15:47:45.657 に答える