Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.06.2010, 10:34
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
Вопрос Создание Dial-UP соединения между 2-мя компами

Нужен пример кода, или исходник. Сам не могу понять.
Задача такая:
Есть 2 компа с Dial-UP модемами. Как на одном поставить "Режим ожидания звонка", а на другом набрать номер 1-ого компа, чтобы установилось между ними соединение, и можно было с одного на другой передать хотябы текстовое сообщение ???
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #2  
Старый 16.06.2010, 12:53
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Схема работы полностью аналогична DialUp соединению с интернетом.
Один компьютер выполняет роль провайдера, предоставляющего "интернет", а второй является клиентом.

Сналача настроим компьютер "провайдера".
Этот компьютер должен "поднимать трубку" при входящем звонке, проверять кто ему звонит и в случае если это "клиент", то создавать подключение.

Настройка "Провайдера"

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

Выбираем "Установить прямое подключение к другому компьютеру". Жмём "Далее".
Следующее окно.
Здесь нам предлагается выбрать тип подключения.

Т.к. мы хотим принимать входящие звонки, то и выбираем "Принимать входящие подключения"
Жмём "Далее".

Теперь нам необходимо выбрать модем, через который будет осуществляться подключение.
Вы же должны выбрать именно модем!

Выбираем нужый модем и жмём "Далее".
Теперь нам предлогается разрешить или запретить подключение по VPN.

В данный момент нам это совершенно не нужно, мы настраиваем DialUp соединение, поэтому выбираем "Запретить виртуальные частные подключения"
Переходим к следующему этапу настройки.
На этом этапе нужно указать, каким пользователям будет разрешено подключаться к компьютеру.
Давайте создадим нового пользователя.

Нажимаем кнопку "Добавить". В открывшемся окне "Новый пользователь" в поле "Пользователь" нужно ввести имя (логин).
Заполнять поле "Полное имя" не обязательно, оно предназначено только для информации.
Также необходимо указать пароль. Пустой пароль может приводить к различным "глюкам", поэтому его желательно указать.
Всё, жмём "Ок".
Новый пользователь появится в списке.
Отмечаем его галочкой, тем самым разрешая подключаться к компьютеру.
Нажимаем "далее"

Теперь не менее важный, но вместе с тем и простой шаг - настройка параметров сети.
В принципе настройки тут требует только "Протокол интернета TCP/IP".
Входим в его свойства.

Рассмотрим это окно подробней.

Доступ к сети.
Как следует из названия, включение этой опции позволит звонящему пользоваться подклшючением к локальной сети (если таковая имеется).

Назначение адресов TCP/IP.
Здесь указывается какие адреса будут назначаться звонящим клиентам.
Т.к. у нас нет сервера DHCP, который бы назначал адреса, то переставляем точку на "Указать адреса TCP/IP явным образом"
В полях ниже вводим диапазон IP адресов.
Стоит заметить, что последнюю цифру нижнего предела следует начинать с 2. Это связано с тем, что 1 в большистве случаев будет занята этим компьютером.
Поле "Всего" показывает сколько максимум клиентов могут быть подключены одновременно. Однако в условиях обычной телефонной линии реально сможет позвонить только 1

Разрешить звонящему указать свой IP.
В случае, если эта опция будет включена, на компьютере-клиенте можно будет вручную указывать IP адрес (который должен попадать в указаный выше диапазон или подсеть как минимум, иначе подключение может некорректно работать, или вообще не работать)
По сути эта опция обеспечивает то, что подключаемый клиент будет иметь всегда один и тот же IP адрес.

Вводим все данные и жмём "Ок".

Остальные протоколы можно оставить как есть.
На этом настройка "провайдера" закончена.
В папке "Сетевые подключения" должен появиться значёк входящих подключений.

Настройка клиента

Теперь займёмся настройкой клиента.
Тут всё очень просто. Нужно настроить обычное DialUp подключение к интернету через модем, указав номер телефона, на котором "висит" компьютер-"провайдер".
А в качестве логина и пароля использовать логин и пароль созданного на главном компьютере пользователя.

Если необходим доступ к "расшареным" папкам, то на обоих компьютера в своствах подключения на вкладке "сеть" должена быть отмечена "Служба доступа к файлам и принтерам для сетей Microsoft"

Вот и всё. Сеть настроена и готова к испытанию.
Запускаем подключение на клиенте. После набора номера, в квартире с "провайдером" раздастся телефонный звонок.
Поднимать трубку не нужно, модемы разговариают на своём языке, мало понятным человеку
Нужно подождать пока компьютер "снимет" трубку. Обычно это происходит после 3-5 гудков или примерно через 30 секунд, в зависимости от модели и настроек модема.

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

Как это всё реализовать чисто на Delphi, я не представляю, поэтому считаю что лучше всего довериться системе.


На а дальше, если вам нужно что то передавать по сети, то вы это можете делать либо через сокеты, либо через любую, уже готовую программу.
Ответить с цитированием
  #3  
Старый 16.06.2010, 16:00
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

Rat, спасибо, но этот способ не подходит, т.к. если один комп настроен на ОЖИДАНИЕ звонка, то ЗВОНИТЬ с него не получится.

Мне нужен именно Код на Delphi,... при этом не используя уже готовые в сисеме подключения.
Вот к примеру мне надо что-то типа стандартного HyperTerminal.

Вообще идея такая:
Прога постоянно "висит" на одном компе в режиме "ожидания вызова" (Как это реализовать в программе?), И на втором компе также. потом мне надо с одного копма на другой передать информацию (текст), - я в проге набираю текст для передачи, нажимаю "передать", она снимает режим "ожидания вызова", звонится до другова компа(Как это реализовать в программе?), передает ему текст(Как это реализовать в программе?), отключается, и назад встает в режим "ожидания вызова". До кучи, планируется использовать не два компа, а 15 ... вообщем организация передачи телеграмм (сообщений), что можно не только с одного другому передать, а всем поочереди.
В представленном тобой способе - методом создания подключений в системе, придется в каждый комп втыкать по 2 модема, и заводить по две телефонных линии, что не предоставляется возможным (одна для приёма, другая для передачи).
__________________
Програмистами не рождаются, ими становятся!
Ответить с цитированием
  #4  
Старый 17.06.2010, 07:17
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Не знаю даже чем помочь. Может стоит посмотреть в сторону фидошного софта?
Ответить с цитированием
  #5  
Старый 18.06.2010, 16:15
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

А где эт можно глянуть?... ссылочкой не пожешь? (устарело)



Вот собственно как все это делается

На обоих компах открываем COM порт модема для этого:
PHP код:
var
  
hCommFileTHandle
  
DCBTDCB;
Begin
 hCommFile 
:= CreateFile(PChar('COM1'), GENERIC_READ or GENERIC_WRITE,
                        
FILE_SHARE_READ or FILE_SHARE_WRITEnil,
  
OPEN_EXISTINGFILE_ATTRIBUTE_NORMAL{FILE_FLAG_OVERLAPPED}, 0);
  if 
hCommFile=INVALID_HANDLE_VALUE then
  begin
    Memo1
.Lines.Append('Unable to open 'CommPort);
    exit;
  
end;

DCB.BaudRate := CBR_115200//скорость
DCB.StopBits := 0;        //стоповые биты (0 - 1, 1 - 1,5, 2 - 2)
DCB.Parity := 0;          //проверка четности
DCB.ByteSize := 8;        //биты данных
SetCommState(hCommFileDCB);
End

Закрытие порта
PHP код:
CloseHandle(hCommFile); 

Вызов номера модема
PHP код:
Var
  
PhoneNumberstring//номер
  
NumberWrittenCardinal//сдесь будет число реально записанных байт
Begin
WriteFile
(hCommFilePChar(PhoneNumber)^, Length(PhoneNumber),
  
NumberWritten,nil)
end

Вызывать номер нужно согласно AT командам модема,
например ATDP89451234567
AT - Команды все начинаются с этого
D - Dial (вызов)
P - Пульсовый режим.
остальное номер телефона, подробнее можно узнать в яндексе

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

PHP код:
var
CurrentState:TComStat;
CodeError:Cardinal;
PData:array [0..2048of byte;
AvaibleBytesRealRead:Cardinal;
Text:String
Begin
ClearCommError
(hCommFileCodeError, @CurrentState); //считываем состояние модема
AvaibleBytes:=CurrentState.cbInQue// получаем количество пришедших байтов

if AvaibleBytes>0 then begin //если что-то пришло
  
If ReadFile(hCommFilePDataAvaibleBytesRealReadnilthen begin // читаем из порта данные
  
if RealRead>0 then begin //если удалось прочитать больше чем ничего
  
Text:=Pchar(@PData); // что дальше делать с данными решайте сами
   
end;
end;
end;
end

Если пришёл вызов на модем, то в переменой TEXT будет #13#10RING#13#10, и отвечаем за вызов записав в модем команду ATA
AT - Команда модема,
A - Ответить на звонок,
После этого модемы попробуют связаться друг с другом не требуя от вас никакого вмешательства,... если соединение удалось, то модем ответит сообщением CONNECT и скорость соединения. При этом модемы перейдут с состояние обмена данными, т.е. любая информация записанная в порт будет выдана на другом конце. Для окончания соединения нужно просто закрыть порт.
__________________
Програмистами не рождаются, ими становятся!

Последний раз редактировалось SCrat.ORS, 20.02.2012 в 20:47.
Ответить с цитированием
  #6  
Старый 21.06.2010, 07:41
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

http://sources.ru/pascal/fido/index2.htm
Ответить с цитированием
  #7  
Старый 21.06.2010, 08:15
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

а можно погуглить или в яндексе посмотреть на запрос: delphi работа с модемом, вроде как не мало ответов там
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025