![]() |
|
|
Регистрация | << Правила форума >> | 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. |