2010-09-07 1 views
7

Привет Есть ли способ подключения к компьютерам через Dial Modem без Интернета? Как окна Hyper терминал. соединение между передачами между компьютерами. Простое соединение между двумя компьютерами Непосредственно и отправка FIle.Связь между двумя компьютерами с помощью модемного набора без Интернета в C#

+0

@shaddhin: Не могли бы вы расширить это: (1) подтвердить, что хотите подключиться по телефонным линиям, (2) какую связь вы хотите: подключение к сети IP или что-то более примитивное? (3) Какие ОС (ы) будут использоваться? – Richard

+0

@ Рихард: Конечно 1) Да. 2) нет разницы только в соединении между двумя компьютерами по телефонным линиям с помощью модемного модема. 3) Windows xp – Shahin

ответ

5

Да.

Предполагая, что модемы подключены через последовательный порт (или эмулируют подключение через последовательный порт): вам понадобится один модем (узнайте свои команды AT!), Чтобы слушать и отвечать на входящие вызовы, а другой для набора первого.

Затем вы можете рассматривать пару как довольно длинную последовательную ссылку.

Однако получить все, чтобы работать надёжно, является скорее искусством, чем наукой, и тем, что так редко делается сегодня, что большая часть его забыта. Последний раз, когда я работал с модемами таким образом, было более пятнадцати лет назад.

+0

спасибо. Я знаю, что это старый метод. но я должен использовать этот метод. спасибо за ваш очень полезный ответ. так что я узнал AT Commands о создании соединения между двумя компьютерами? существует ли какой-либо выбор? – Shahin

+1

@shaddhin: Википедия выглядит как хорошее введение: http://en.wikipedia.org/wiki/Hayes_command_set. В Интернете должно быть больше информации, но вам придется искать. – Richard

+0

Итак, это означает, что вы действительно можете совершать бесплатные звонки через Интернет с помощью сим-карты, если знаете, что делаете? –

1

Кто-то написал реализацию XModem в C# здесь: http://trackday.cc/b2evo/blog2.php/2007/08/02/net-xmodem Это может помочь с тем, что вам нужно.

+0

спасибо. может ли я отправлять файл через модем без Интернета? – Shahin

+1

Это должно быть сделано. Я не уверен, что код обрабатывает набор и отвечает на отправляющую и принимающую модель, но он обрабатывает отправку и получение файлов через COM-порт. – JLWarlow

4

То, как мы это делали в прежние времена, было связано с нуль-модемом. Раньше мы даже делали «сетевые» игры в тот же день.

Это базовый кабель RS-232 с перемычками для приема и передачи. Я все еще вижу некоторые адаптеры, поэтому не должно быть слишком сложно их схватить.

Значительно позже некоторые люди создали SLIP (последовательная линия IP), чтобы включить последовательную линию в качестве несущей для всего стека TCP/IP. Чуть позже PPP был представлен как усовершенствование. Я думаю, что SLIP по-прежнему доступен для большинства платформ, и PPP существует на каждой платформе, которая может делать коммутируемый доступ в Интернет.

Итак, если вопрос в основном сводится к тому, желая соединить два компьютера через PPP, не выходя через кого-либо коммутируемые сервера (например, Earthlink), что вам нужно, чтобы установить сервер PPP на одной из двух машин , Они поставляются с большинством дистрибутивов Linux. Для Windows вам придется искать. Я бы помог, но мой корпоративный блокиратор снова переоценен.

+0

Вы должны использовать нуль-модемный кабель для прямого подключения к последовательным портам DTE назад (или двум DCE), но не использующим модемы. – Richard

+0

@ Рихард, это была своего рода точка. Если компьютеры расположены совместно, вам не нужны модемы. Модемы были созданы для того, чтобы телефонные линии могли работать на междугородних последовательных линиях. –

+0

Соединение между двумя компьютерами с использованием модема без Интернета требует телефонного кабеля или кабеля RS-232?!Мне жаль из-за моей плохой информации об этом. – Shahin

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 - Ярлык»

Затем вы можете прослушивать пункт назначения, чтобы узнать, подключено ли оно.

В конечном счете, хотя я считаю, что лучшим решением может быть использование 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); 

Как только запись была добавлена ​​в коллекцию, она будет немедленно добавлена ​​в телефонную книгу.

+0

спасибо. поэтому мне нужно создать соединение между двумя компьютерами? это лучше, потому что я не участвую в AT Commands. все, что вы сказали, доступно с помощью кодов C#? я хочу и автоматический процесс. например, компьютер стартового набора и компьютер 2, автоответчик. – Shahin

+0

Расширение ввода и отображение использования RAS с использованием кодового набора DotRAS. – ChrisBD

+0

Использование DotRas в этом сценарии может работать, однако вам нужно что-то, что может отвечать и маршрутизировать вызовы на другом конце. Windows RRAS на своих серверных операционных системах справится с этим (я считаю, никогда не настраивал соединение по коммутируемому соединению раньше) для вас после настройки. Если бы это был я, я бы, вероятно, получил VPN-сервер в удаленной сети и получил доступ к нему таким образом, плюс ему не потребовалась бы телефонная линия. –

1

Одно из вопросов, которые неясно из вашего вопроса, заключается в том, пытаетесь ли вы напрямую подключить две машины в одном и том же физическом местоположении с помощью кабеля или если вы пытаетесь подключиться к одному из другого через PSTN.

Если они находятся в одном и том же месте, устраните модем из уравнения. Это значительно снижает сложность.

Если они находятся в разных местах (т. Е. Набирают телефонное соединение с честным соединением), there is some code here, что может вам помочь. В статье рассказывается о модеме Bluetooth или GPRS, но суть его в том, что он отправляет AT-команды, которые могут использоваться для связи с любым совместимым с AT-командой устройством. Это может заставить вас идти в правильном направлении.

Update

См http://msdn2.microsoft.com/en-us/system.io.ports.serialport(VS.80).aspx

Поскольку модем должен быть подключен к COM-порту (COM1-COM12), даже это внутренний модем, вы должны быть в состоянии использовать SerialPort платформы .NET в класс, чтобы открыть порт, отправьте команды AT и т. д. После того, как вы открыли соединение, вы можете использовать библиотеку XModem для передачи файлов или прямой последовательный интерфейс для регулярной связи.

Вам нужен IP-стек, или вы довольны прямым последовательным протоколом?

+0

спасибо. Набор номера без физического кабеля. Я имею в виду отдельные местоположения. Соединение между двумя телефонными линиями телефона и модемом. – Shahin

+0

Что такое IP-стек? я хочу просто простую связь и передачу файлов с индикатором выполнения и т. д .... thnaks. – Shahin