在c#中通过拨号调制解调器连接2台计算机而无需互联网

时间:2010-09-07 15:30:14

标签: c# .net modem

您有没有办法通过拨号调制解调器连接到计算机没有互联网? 喜欢windows Hyper终端。 连接在计算机之间发送文件。 只需在两台计算机之间直接连接并发送FIle。

5 个答案:

答案 0 :(得分:5)

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

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

然而,让所有东西可靠地工作更像是一门艺术,而不是一门科学,而今天很少有人能够忘记这一点。我最后一次以这种方式使用调制解调器是在十五年前。

答案 1 :(得分:4)

过去我们以前用它做的方式是使用零调制解调器电缆。我们甚至过去常常以这种方式进行“网络化”游戏。

这基本上是一根RS-232电缆,其接收和发送引脚交叉连接。我仍然看到一些适配器,所以它不应该太难以抓住一个。

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

因此,如果问题基本归结为想要通过PPP联网两台计算机而不通过其他人的拨号服务器(如Earthlink),那么你需要的是在一台服务器上安装一台PPP服务器这两台机器。他们附带了大多数Linux发行版。对于Windows,你必须去看看。我会帮忙,但是我的公司封锁人员再次过度兴奋。

答案 2 :(得分:1)

有人在C#中编写了一个XModem实现:http://trackday.cc/b2evo/blog2.php/2007/08/02/net-xmodem这可能有助于你所追求的目标。

答案 3 :(得分: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:\ drive的链接并命名为“Local Area Connection 2 - Shortcut”

然后你可以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);

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

答案 4 :(得分:1)

您的问题中不明确的一件事是您是否尝试使用电缆直接连接同一物理位置的两台计算机,或者您是否尝试通过PSTN从另一台计算机拨入另一台计算机。

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

如果他们位于不同的位置(即拨打诚实的拨号连接),there is some code here可能对您有所帮助。本文讨论蓝牙或GPRS调制解调器,但其核心是发送AT命令,可用于与任何AT命令集兼容设备通信。它可能会让你朝着正确的方向前进。

<强>更新

请参阅http://msdn2.microsoft.com/en-us/system.io.ports.serialport(VS.80).aspx

由于调制解调器应连接到COM端口(COM1-COM12),即使它是内部调制解调器,您也应该能够使用.NET框架的SerialPort类打开端口,发送 AT

您是否需要IP堆栈,或者您对直接串行协议感到满意吗?