![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
в разделе интернет и сети я писал:
Задача: Написать 2 библиотеки. в одной должна быть ф-ия вызывающая функцию из 2 длл-ки(или программы - ЕХЕ) через интернет. т.е. указывается конкретный ip и дорога к файлу второй библиотеки(так наверно ). При чем так чтоб обратно возвращался только результат расчета ф-ии. Цель: защитить функции 2 длл(или программы - ЕХЕ) от декомпиляции. Как примерно выглядит такой код? Или подскажите где почитать про это. Там ни кто не отвечает. Здесь так же жду ответа. Или подскажите как осуществить подобную связь с помощью 2 ехе. чтоб одна слала строку другой через инет. а обратно возвращался только результат расчета этой строки. То есть просто запрос ответ. |
|
#2
|
|||
|
|||
|
Через Инет и именно такую задачу не пробовал реализовать.
Но одно время была проблема копирования файлов по сети (с возможностью обмена сообщениями между Пользователями) без использования "расшаренных" папок. Я использовал Delphi-компоненты из странички "FastNet" (в палитре компонентов). TNMStrmServ, TNMStrm, TNMMsg, TNMMSGServ. |
|
#3
|
|||
|
|||
|
А как их юзать мил человек?
|
|
#4
|
|||
|
|||
|
Вообще-то, для этих целей предназначен SOAP.
С другой стороны, можно обойтись компонентами Indy - TIdTCPClient/TIdTCPServer. Там все настолько примитивно, что даже объяснять ненадо. |
|
#5
|
|||
|
|||
|
с помощью инди сделал такой вот пирог. проблема в след.:
товарищу дал обе проги, мы вводили 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
|
|||
|
|||
|
а ты не за файерволом сидишь? а то порты тогда надо пробрасывать.
|