7

嗨 有没有办法通过拨号调制解调器连接到没有互联网的电脑?像 windows 超级终端一样。在计算机之间建立连接发送文件。只需在两台计算机之间直接连接并发送文件。

4

5 回答 5

5

是的。

假设调制解调器通过串行端口连接(或模拟通过串行端口连接):您需要设置一个调制解调器(学习您的AT命令!)来监听和接听来电,另一个拨第一个。

然后,您可以将该对视为相当长的串行链路。

然而,让一切可靠地工作更像是一门艺术,而不是一门科学,而且今天很少有人做到这一点,以至于大部分都被遗忘了。我上一次以这种方式使用调制解调器是在十五年前。

于 2010-09-07T15:43:14.173 回答
4

我们过去使用的方法是使用零调制解调器电缆。在过去,我们甚至曾经以这种方式进行“联网”游戏。

这基本上是一根 RS-232 电缆,其中接收和发送引脚交叉接线。我仍然在周围看到一些适配器,因此掌握一个应该不会太难。

很久以后,一些人创建了SLIP(串行线路 IP),以使串行线路能够充当整个 TCP/IP 堆栈的载体。稍后引入PPP作为改进。我认为 SLIP 仍然适用于大多数平台,并且 PPP 存在于每个可以进行拨号上网的平台上。

因此,如果问题基本上归结为想要通过 PPP 将两台计算机联网而不通过其他人的拨号服务器(如 Earthlink),那么您需要在两台计算机中的一台上安装 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

您可以在需要使用调制解调器的 Windows 中轻松设置拨号网络连接(在设置 VPN 的选项下,但您可以将其设置为仅拨号)。

因此,我假设您可以将网络位置映射到它以供您的 C# 代码使用。

如前所述,至少有一个调制解调器必须打开并监听连接。

* 编辑 *

我相信下面的代码会触发一个已经放置在网络连接中的拨号连接

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 类上的静态方法之一,或在此处手动配置连接。

pbk.Entries.Add(entry);

一旦条目被添加到集合中,它将立即添加到电话簿中。

于 2010-09-07T15:47:45.657 回答
1

从您的问题中不清楚的一件事是,您是尝试使用电缆直接连接同一物理位置的两台机器,还是尝试通过 PSTN 从另一台机器拨入。

如果它们在同一个地方,请从等式中消除调制解调器。这显着降低了复杂性。

如果他们在不同的位置(即通过诚实的拨号连接拨号),这里有一些代码可能会对您有所帮助。本文讨论的是蓝牙或 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 回答