Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > создание vpn в delphi


Автор: Namtar 18.9.2009, 10:35
Всем привет! появилась необходимость создания программы, которая бы позволила 2-ум компьютерам (подключенных к инету) передавать данные друг другу! я так понял для этого необходимо на одном из них создать сервер vpn, а 2-ой должен к нему коннектиться. хотелось бы узнать какими средствами delphi это можно сделать и как? заранее спасибо

Автор: niteo 18.9.2009, 12:36
А программу писать тебе зачем? Используй NetSupport если в XP или стандартные средства системы....
Если приперло, можно и без vpn. Проще ftp ИМХО

Автор: Namtar 21.9.2009, 08:03
надо именно программу, т.к. это будет специальная прога для управления одного девайса через сеть с возможностью запуска проги откуда угодно! так что необходимо мастерить! smile

Автор: 1000000dollars 21.9.2009, 09:42
Цитата
программы, которая бы позволила 2-ум компьютерам (подключенных к инету) передавать данные друг другу! я так понял для этого необходимо на одном из них создать сервер vpn, а 2-ой должен к нему коннектиться


На одной машине прога открывает серверный сокет, а другая коннектится к ней через клиентский сокет.
Есть три варианта:
 - Если одна из машин имеет "белый" IP адрес - она и будет сервером.
 - Если обе имеют "белые" IP адреса - всё равно какая будет сервром, а какая клиентом.
 - Если обе имеют "серые" IP адреса - нужно найти машину с белым IP и сделать из неё VPN сервер, к которому будут коннектиться обе машины. После попадания в vpn, если всё нормально настроено, машины будут видеть друг друга по их IP в VPN.

Автор: Virtuals 22.9.2009, 12:18
1000000dollars, +1

ЗЫ добавлю только что VPN в 3м случае не обязателен. (если управление не реалтайм, ну или обьем трафика небольшой и скорости некритичны) достаточно и обычного SQL сервера с какой либо "мордой"
ну а если шибко хочется VPN не нужно изобретать велосипед есть уже нормальный проект OpenVPN, сами понимаете с какой лицензией smile.

Автор: 1000000dollars 22.9.2009, 14:05
Цитата

достаточно и обычного SQL сервера с какой либо "мордой"


ну тогда уж проще взять IRC или тот же FTP smile

Автор: Namtar 22.9.2009, 21:02
"белый" это типа паблик, прямой ip в сети?

Автор: apostolnikolai 23.9.2009, 08:16
Используй rasobj

Добавлено через 22 секунды
могу компонент подкинуть с примером

Добавлено через 2 минуты и 48 секунд
это для создания ВПН 

Автор: niteo 23.9.2009, 09:32
нафига VPN ????? Если ему девайсом управлять???

Автор: Namtar 24.9.2009, 09:58
подкинуть компоненту было бы неплохо! smile

Автор: 1000000dollars 24.9.2009, 12:43
Цитата

"белый" это типа паблик, прямой ip в сети?


"белый", но же внешний IP адрес - это адрес из разрешённого для использования в сети Интернет диапазона. (он точно не начинается с 192.168., 10., и 172.16, 172.17, 172.18 и так далее до 172.31)

Цитата

Используй rasobj


Если я правильно помню, он может только подключиться к VPN серверу. Сам же VPN сервер придётся поднимать самому (если, конечно, нет уже поднятого).

Автор: Namtar 25.9.2009, 19:16
а создать vpn программно в delphi можно?

Автор: Virtuals 27.9.2009, 06:21
Namtar, можно smile, главное зачем?
ибо подымать структуру "виртуальной частной сети" это как из пушки по тараканам smile.

ЗЫ ну так, белый IP у станции с девайсом есть?

Автор: Namtar 29.9.2009, 21:12
ну насколько я знаю есть, но на всякий случай и возможность vpn надо предусмотреть!

Автор: Virtuals 30.9.2009, 05:10
Namtar, vpn в любом случае потребует хотя-бы 1 белый ИП. 
а так пользуй клиент-серверное соединение. хоть на тех же TServerSocket TClientSocket (примеры есть в папке с дельфи) или используй компоненты ICS.

Автор: apostolnikolai 30.9.2009, 12:29
Namtar,  ну так что компонент для VPN и PPPoE нужен ? куда кидать ?

Автор: Namtar 8.10.2009, 17:33
susanin1986@inbox.ru - сюда кидай! smile

Автор: Namtar 21.10.2009, 21:42
народ, есть вопрос! забил болт на vpn - соединение происходит напрямую. сервер создается через IdTCPServer так:

function TServerFrm.StartServer: Boolean;
var Binding : TIdSocketHandle;
begin
  Result:= False;
  if not StopServer then exit;
  TCPServer.Bindings.Clear;
  try
    Binding := TCPServer.Bindings.Add;
    Binding.IP := EdIP.Text;
    Binding.Port := StrToInt(EdPort.Text);

    TCPServer.Active := true;
    result := TCPServer.Active;

    ServerRunning := result;
  except
  on E : Exception
  do begin
     PnStatus.Caption:= E.Message;
     Result := false;
     ServerRunning := result;
     end;
  end;
end;

а клиент коннектится через IdTCPClient

procedure TForm1.Button1Click(Sender: TObject);
begin
  TCPClient.Disconnect;
  TCPClient.Host:= Edit1.Text;
  TCPClient.Port:= StrToInt(Edit2.Text);
  try
    TCPClient.Connect;
  except
  end;
end;

типа того. необходимо после того как я передал инфу с клиента (через TCPClient.WriteLn(Edit3.Text) ) чтобы от сервера вернулось тоже самое обратно на клиент (что-то наподобие обратной связи), т.к. будет графическое отображение изменений, и клиентов приконнекченных к серверу скорее всего будет больше 1-го! возможно ли это, и если да, то как и какими командами! заранее спасибо! smile



Автор: php 11.11.2009, 12:51

Цитата

apostolnikolai
ну так что компонент для VPN и PPPoE нужен ? куда кидать ?


Конечно нужен, сюда можешь выложить? т.к  очень интересует сей вопрос..

Автор: crazynetwork 12.11.2009, 00:13
+1

Автор: dvamaster 19.11.2009, 14:41
Цитата(Namtar @  22.10.2009,  00:42 Найти цитируемый пост)
народ, есть вопрос! забил болт на vpn - соединение происходит напрямую. сервер создается через IdTCPServer


аплодирую  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)