![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите пожаулйста.
Задача: Написать 2 библиотеки. в одной должна быть ф-ия вызывающая функцию из 2 длл-ки(или программы - ЕХЕ) через интернет. т.е. указывается конкретный ip и дорога к файлу второй библиотеки(так наверно ). При чем так чтоб обратно возвращался только результат расчета ф-ии.Цель: защитить функции 2 длл(или программы - ЕХЕ) от декомпиляции. Как примерно выглядит такой код? Или подскажите где почитать про это. Ну хотяб подскажите как осуществить подобную связь с помощью 2 ехе. чтоб одна слала строку другой через инет. а обратно возвращался только результат расчета этой строки. Последний раз редактировалось одинадцатый, 11.08.2009 в 20:42. |
|
#2
|
||||
|
||||
|
если я Вас правильно понел, то Вам нада копать в сторону Клиент/Серверных приложений(определение)..
прямо использовать DLL'ку с другой машины через инет без скачивания её на клиенский комп невозможно, если только она не является клиентом/сервером.. можно так же сервер реализовать на PHP(к примеру), а библиотеки-клиенты на Delphi.. так будет даже лучше т.к. не на всех машинах встанет сервер)) останется найти халявный PHP хостинг и залить туда скрипт, а клиентов научить обрабатывать HTTP запросы.. почитать об этом можно тут... |
|
#3
|
|||
|
|||
|
Не) Это для меня сложновато. Я в новичках ту же тему открыл. вот посты отдута:
с помощью инди сделал такой вот пирог. проблема в след.: товарищу дал обе проги, мы вводили ip друг друга. короче ему от меня доходили сообщения и от клиента и от сервера, а мне нет - ошибки 10060 и 10061. что делать? а ты не за файерволом сидишь? а то порты тогда надо пробрасывать. У меня запущен каспер, у него винда с нуля, и брэндмаузер отключен. Что значит пробрасывать? Как? Я эту прогу буду давать многим людям как сделать чтоб у них таких проблем не возникало? И еще как узнать с какого ip вновь подключился клиент и когда он отсоединился? в общем он попробовал с подключения с которого мне пытался послать, послать себе на другого оператора - пришло. а до меня всяко разно не доходит. каспер отключил. в чем может быть дело? Последний раз редактировалось одинадцатый, Вчера в 12:12. Так отставить инди! С сокетами сделал. теперь получше. От меня товарищу идет и от клиента и от сервера. от него ко мне идет только от сервера, ошибка все та же - 10060. Хотя от него до другого адреса идет и от того и от того. у меня в проге ip определяется при formcreate. а когда к нему на серв сообющение приходит от меня (клиента) ип пишется совсем другой. нам кжется что в этом проблема. И еще такая ошибка: Невозможно выполнить операцию на сокете, т.к. буфер обмена мал или очередь переполнена. появляется при активации клиента иногда. что с ним? что делать господа? исходники: Сервер: Код: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient,Winsock, IdTCPServer, ScktComp, ComCtrls;
type
TForm1 = class(TForm)
Label4: TLabel;
Label5: TLabel;
Button3: TButton;
Button4: TButton;
Edit9: TEdit;
Edit10: TEdit;
Edit6: TRichEdit;
edit7: TRichEdit;
ServerSocket1: TServerSocket;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
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.Button3Click(Sender: TObject);
var
i: byte;
begin
with ServerSocket1.Socket do
begin
if ActiveConnections>0 then
for i := 0 to ActiveConnections - 1 do
try
Connections[i].SendText(edit6.Text);
Application.ProcessMessages;
except
//
end;
end; {/WITH}
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
edit7.Text:=socket.ReceiveText;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Str: string;
RemIP: string;
begin
label1.Caption :='Последнее сообщение с ip - ' + Socket.RemoteAddress;
edit7.Text := Socket.ReceiveText;
end;
end.клиент: Код: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient,Winsock, IdTCPServer, ScktComp, ComCtrls;
type
TForm1 = class(TForm)
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button3: TButton;
Edit8: TEdit;
Button4: TButton;
Edit9: TEdit;
Edit10: TEdit;
ClientSocket1: TClientSocket;
Edit6: TRichEdit;
edit7: TRichEdit;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
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.Button3Click(Sender: TObject);
var
i: byte;
begin
with clientSocket1.Socket do
begin
try
sendtext(edit6.text);
except
//
end;
end; {/WITH}
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
clientsocket1.Active:=false;
clientsocket1.Address:=edit8.Text;
clientsocket1.Active:=true;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
edit7.Text:=socket.ReceiveText;
end;
end.Последний раз редактировалось одинадцатый, 14.08.2009 в 09:29. |