Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2009, 16:46   #1
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию Прокси через TidMappedPortTCP

Здравствуйте, уважаемые!
Хочу написать прокси (с функциями маршрутизатора), покурив инет нашел несложный пример на TidMappedPortTCP
Собсно наваял, но столкнулся с ошибками:
Код:
unit SDIMAIN;
interface
uses Windows, Classes, Graphics, Forms, Controls, Menus,
  Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, ImgList, StdActns,
  ActnList, ToolWin, Mask, RzEdit, RzSpnEdt, IdBaseComponent, IdComponent,
  IdCustomTCPServer, IdMappedPortTCP,SysUtils;
type
  TSDIAppForm = class(TForm)
    IdMappedPortTCP: TIdMappedPortTCP;
    ProxyServer_Button: TButton;
    ProxyServer_MappedHost_Edit: TEdit;
    ProxyServer_DefaultPort_SpinEdit: TRzSpinEdit;
    ProxyServer_MappedPort_SpinEdit: TRzSpinEdit;
    procedure ProxyServer_ButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  SDIAppForm: TSDIAppForm;
implementation
{$R *.dfm}
procedure TSDIAppForm.ProxyServer_ButtonClick(Sender: TObject);
begin
if IdMappedPortTCP.Active then
      begin
        IdMappedPortTCP.Active:=false;
        ProxyServer_DefaultPort_SpinEdit.Enabled:=true;
        ProxyServer_MappedHost_Edit.Enabled:=true;
        ProxyServer_MappedPort_SpinEdit.Enabled:=true;
        ProxyServer_Button.Caption:='Старт';
      end
      else
      begin
        try
          IdMappedPortTCP.DefaultPort:=StrToInt(ProxyServer_DefaultPort_SpinEdit.Text);
          IdMappedPortTCP.MappedHost:=ProxyServer_MappedHost_Edit.Text;
          IdMappedPortTCP.MappedPort:=StrToInt(ProxyServer_MappedPort_SpinEdit.Text);
          IdMappedPortTCP.Active:=true;
          ProxyServer_Button.Caption:='Стоп';
        except
        end;
          ProxyServer_DefaultPort_SpinEdit.Enabled:=false;
          ProxyServer_MappedHost_Edit.Enabled:=false;
          ProxyServer_MappedPort_SpinEdit.Enabled:=false;
      end;
end;

end.
Делаю так: настраиваю программку на сторонний прокси (122.144.11.169:8080)
ИЕ настраиваю на 127.0.0.1:8080
Пытаюсь открыть страницу, дельфя прерывает процесс с такой ошибкой:
Цитата:
First chance exception at $7C812AFB. Exception class EIdNotASocket with message 'Socket Error # 10038
Socket operation on non-socket.'. Process SDIAPP.exe (2016)
На сокетах писать ой как нехочется, желательно на Инди... Подскажите, в чем может быть ошибка?

PS: извиняюсь, ступил... надо было в другом разделе создать...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 25.12.2009, 22:31   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Socket operation on non-socket. Эта ошибка частенько возникает при слишком низких тайм-аутах или слишком маленьких размеров пакетов.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи

Последний раз редактировалось Квэнди; 26.12.2009 в 00:41.
Квэнди вне форума Ответить с цитированием
Старый 26.12.2009, 10:50   #3
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

спасибо, сейчас попробую поковырять...
а не ткнете носом в линк с нормальными примерами работы с этим компонентом?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 26.12.2009, 11:58   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...вот делал когда-то прокси-сервис на основе TIdMappedPortTCP для людей у которых инет на работе отсутствует, но которые могут "договориться" со знакомым у которых он есть в локалке... сервис устанавливается у знакомого, а браузер человека, у которого инета нет, настраивается на ip и порт этого знакомого и... вуа-ля (см. вложение - переименуй в dpr)

инсталляция сервиса - i
деинсталляция сервиса - u

зы: при использовании TIdMappedPortTCP и желании шифрации и учета трафика, поковырять генофонд компонента все-же придется, т.к. в явном виде данные возможности в нем не присутствуют.
Вложения
Тип файла: txt ptcp.txt (12.2 Кб, 550 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.12.2009, 13:17   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

raxp, спасибо большое, сейчас буду разбираться)

Возник кстати ещё один вопрос по этому компоненту...
Нашел пример работы с ним, там есть такая вот процедура:
Код:
procedure TForm1.MAPExecute(AThread: TIdMappedPortThread); 
begin // Входящие пакеты
  fs.Write(#13#10'>>>>'#13#10,8); // пишем в лог маркер входящих пакетов
  fs.Write(AThread.NetData[1], Length(AThread.NetData)); // пишем в лог данные
end;
Всё вроде бы отлично, но проблема в том, что у меня видимо версия Инди другая, у меня нет метода(?) .NetData в компоненте... да и объект совсем другой:

Код:
procedure TSDIAppForm.IdMPTCPConnect(AContext: TIdContext);
begin
memo1.Lines.Add(AContext.Binding.PeerIP);
end;
пришлось его в Юзес добавлять... я что-то не то делаю, или дело в компоненте?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 26.12.2009, 13:29   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

да, обновите версию indy... в старом такого свойства нет.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.12.2009, 13:40   #7
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

а разве с бдс2007 не indy 10 стоит?..
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 26.12.2009, 13:52   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...не в курсе, у меня delphi6.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.12.2009, 13:55   #9
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Ну в общем попытался инсталить инди10... матюгается, что dclIndyCore100.bpl уже имеется запущеный... в папке бинарников лежит, видимо инди10 уже установлена =\ как отменить установку? просто файлы поудалять?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 26.12.2009, 14:03   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

да, при закрытом delphi в папке project/bpl поудалять все файлы с этими именами.. также можно в инсталляторе из самой delphi - components/ components packages сделать remove bpl нужного...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа IdHttp через прокси TilerDerton Работа с сетью в Delphi 2 27.05.2009 00:14
Подключение инета через прокси Dryg2009 Работа с сетью в Delphi 8 02.05.2009 02:00
Отправка email через прокси BMH Общие вопросы .NET 3 26.04.2009 03:07
работа через прокси BESS Работа с сетью в Delphi 18 28.09.2008 21:45
Подключение БД через прокси D-mon БД в Delphi 2 30.05.2008 15:30