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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.08.2009, 21:38
одинадцатый одинадцатый вне форума
Новичок
 
Регистрация: 16.04.2009
Сообщения: 95
Репутация: 10
По умолчанию связь программ через интернет

в разделе интернет и сети я писал:

Задача:
Написать 2 библиотеки. в одной должна быть ф-ия вызывающая функцию из 2 длл-ки(или программы - ЕХЕ) через интернет. т.е. указывается конкретный ip и дорога к файлу второй библиотеки(так наверно ). При чем так чтоб обратно возвращался только результат расчета ф-ии.
Цель: защитить функции 2 длл(или программы - ЕХЕ) от декомпиляции.
Как примерно выглядит такой код?

Или подскажите где почитать про это.

Там ни кто не отвечает. Здесь так же жду ответа.
Или подскажите как осуществить подобную связь с помощью 2 ехе. чтоб одна слала строку другой через инет. а обратно возвращался только результат расчета этой строки. То есть просто запрос ответ.
Ответить с цитированием
  #2  
Старый 12.08.2009, 09:30
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Через Инет и именно такую задачу не пробовал реализовать.
Но одно время была проблема копирования файлов по сети (с возможностью обмена сообщениями между Пользователями) без использования "расшаренных" папок.
Я использовал Delphi-компоненты из странички "FastNet" (в палитре компонентов).
TNMStrmServ, TNMStrm, TNMMsg, TNMMSGServ.
Ответить с цитированием
  #3  
Старый 12.08.2009, 15:42
одинадцатый одинадцатый вне форума
Новичок
 
Регистрация: 16.04.2009
Сообщения: 95
Репутация: 10
По умолчанию

А как их юзать мил человек?
Ответить с цитированием
  #4  
Старый 12.08.2009, 16:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще-то, для этих целей предназначен SOAP.
С другой стороны, можно обойтись компонентами Indy - TIdTCPClient/TIdTCPServer. Там все настолько примитивно, что даже объяснять ненадо.
Ответить с цитированием
  #5  
Старый 12.08.2009, 23:05
одинадцатый одинадцатый вне форума
Новичок
 
Регистрация: 16.04.2009
Сообщения: 95
Репутация: 10
По умолчанию

с помощью инди сделал такой вот пирог. проблема в след.:
товарищу дал обе проги, мы вводили ip друг друга. короче ему от меня доходили сообщения и от клиента и от сервера, а мне нет - ошибки 10060 и 10061. что делать?


сервер
Код:
unit Unit1;

interface

uses
  winsock,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls,
  IdTCPConnection, IdTCPClient;

type
  TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    IdTCPClient1: TIdTCPClient;
    Button1: TButton;
    Edit3: TEdit;
    Label3: TLabel;
    Button2: TButton;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure IdTCPServer1Exception(AThread: TIdPeerThread;
      AException: Exception);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IdTCPServer1Exception(AThread: TIdPeerThread;AException: Exception);
var s: string;
key, i :integer;
begin
key:=10;
with athread.Connection do
try
  try
  edit2.Text:=readln;
  //writeln(edit1.Text);
  except
  on e: exception do writeln(e.Message);
  end;
finally
disconnect;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
const WSVer = $101;
var
  wsaData: TWSAData;
  P: PHostEnt;
  Buf: array [0..127] of Char;
  result:string;
begin
  Result := '';
  if WSAStartup(WSVer, wsaData) = 0 then begin
    if GetHostName(@Buf, 128) = 0 then begin
      P := GetHostByName(@Buf);
      if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
form1.Caption:='server   ip - ' + result;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with idtcpclient1 do
  try
    connect;
    try
      writeln(edit1.Text);
      //edit2.Text:=readln;
    finally
      disconnect;
    end;
  except
    on e: exception do showmessage('ошибка соединения: ' + e.message);
    on e: exception do showmessage('ошибка: ' + e.Message);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idtcpclient1.host:=edit3.Text;
idtcpclient1.Port:=strtoint(edit5.Text);
idtcpserver1.DefaultPort:=strtoint(edit4.text);
end;

end.

клиент
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient,Winsock, IdTCPServer;

type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    IdTCPServer1: TIdTCPServer;
    Edit3: TEdit;
    Label3: TLabel;
    Button2: TButton;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure IdTCPServer1Exception(AThread: TIdPeerThread;
      AException: Exception);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

with idtcpclient1 do

  try
    connect;
    try
      writeln(edit1.Text);
      //edit2.Text:=readln;
    finally
      disconnect;
    end;
  except
    on e: exception do showmessage('ошибка соединения: ' + e.message);
    on e: exception do showmessage('ошибка: ' + e.Message);
    end;

end;

procedure TForm1.FormCreate(Sender: TObject);
const WSVer = $101;
var
  wsaData: TWSAData;
  P: PHostEnt;
  Buf: array [0..127] of Char;
  result:string;
begin
  Result := '';
  if WSAStartup(WSVer, wsaData) = 0 then begin
    if GetHostName(@Buf, 128) = 0 then begin
      P := GetHostByName(@Buf);
      if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
form1.Caption:='client   ip - ' + result;
end;

procedure TForm1.IdTCPServer1Exception(AThread: TIdPeerThread;
  AException: Exception);
var s: string;
key, i :integer;
begin
key:=10;
with athread.Connection do
try
  try
  edit2.Text:=readln;
  //writeln(edit1.Text);
  except
  on e: exception do writeln(e.Message);
  end;
finally
disconnect;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idtcpclient1.host:=edit3.Text;

idtcpclient1.Port:=strtoint(edit4.Text);
idtcpserver1.DefaultPort:=strtoint(edit5.text);
end;

end.
Ответить с цитированием
  #6  
Старый 13.08.2009, 01:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

а ты не за файерволом сидишь? а то порты тогда надо пробрасывать.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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