Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

готов признать что вы крутые программеры   Найти похожие ветки 

 
Tirael ©   (2006-11-18 04:56) [0]

если посоветуете что нить полезное... я задавал както ворос про прокси, про локальный, про тот к которому обращаются по 127.0.0.1... как его сделать? я пробовал с сокетами, возникали проблемы, я их описывал, но так никто и не помог, поэтому вопрос другой: хотелось бы ссылки на статьи, примеры кода по сабжу.
ЗЫ все ругают студентов за вопросы, но на вопросы сложнее студенческих ответить не могут... парадокс


 
Джо ©   (2006-11-18 04:57) [1]

> готов признать что вы крутые программеры

Пожалуй, не признавай. Думаю, от этого никто не умрет.


 
atruhin ©   (2006-11-18 05:40) [2]

> я задавал както ворос про прокси, про локальный, про тот
> к которому обращаются по 127.0.0.1... как его сделать?

Этот вопрос, по уровню именно студенческий! Не ответили тебе наверное потому, что
так задал вопрос. Литературы в сети, на данную тему море, и статьи и книги.
http://www.google.com/search?hs=akF&hl=ru&client=opera&rls=ru&q=winsock&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
Когда прочитаешь и будет КОНКРЕТНЫЕ вопросы, например: почему функция XXX возвращает не ожидаемый результат + пример кода с вызовом,
тебе тут же дадут ответ.


 
KilkennyCat ©   (2006-11-18 07:23) [3]

> [0] Tirael ©   (18.11.06 04:56)


у тя высшее образование, а у мня нет. По логике, я должен тебе задавать вопросы, а не наоборот. Студенческие.


 
lookin ©   (2006-11-18 07:24) [4]

test


 
Gydvin ©   (2006-11-18 08:10) [5]

Мне в приципе пофиг кого ты признаешь программистом, кого нет. И нефиг делать тупой развод. Можно просто спросить.

ЗЫ. Посмотри, здесь есть исходник локального прокси
http://www.delphisources.ru/pages/sources/internet/1_internet.html


 
isasa ©   (2006-11-18 08:45) [6]

Tirael ©   (18.11.06 04:56)  
... я задавал както ворос про прокси, про локальный, про тот к которому обращаются по 127.0.0.1...


Вообще-то, я тихо догадываюсь, что речь идет о HTTP туннелинге.
Попробуй, рулит ли Яндекс на эту тему(выделено жирным). Остальное, все есть в описании стека TCP/IP протоколов и адресации в таких сетях. Рулит, тот же.


 
umbra ©   (2006-11-18 10:36) [7]

если isasa ©   (18.11.06 08:45) [6] прав, то все, что надо сделать, это
1) приконнектиться к HTTP прокси, получить от него ответ 200
2) с помощью имеющегося соединения коннектиться куда надо.

Недописанная реализация есть в инди 10 (IdConnectThroughHTTPProxy.pas), принцип описан в http://www.web-cache.com/Writings/Internet-Drafts/draft-luotonen-web-proxy-tunneling-01.txt


 
MikePetrichenko ©   (2006-11-18 11:08) [8]

Что-то последнее время вопросы стали очень похоже на задания с WebLancer.
К чему движемся?


 
antonn ©   (2006-11-18 11:23) [9]

MikePetrichenko ©   (18.11.06 11:08) [8]
что на WebLancer меньше специалистов из разных областей?


 
Anatoly Podgoretsky ©   (2006-11-18 13:04) [10]

> Tirael  (18.11.2006 4:56:00)  [0]

На слабо берешь?


 
Anatoly Podgoretsky ©   (2006-11-18 13:47) [11]

> lookin  (18.11.2006 7:24:04)  [4]

Это ответ?


 
KilkennyCat ©   (2006-11-18 13:55) [12]

> [11] Anatoly Podgoretsky ©   (18.11.06 13:47)


Это ответ, вопрос, как его применить? :)


 
Anatoly Podgoretsky ©   (2006-11-18 14:13) [13]

> KilkennyCat  (18.11.2006 13:55:12)  [12]

А это не наша проблема.


 
Гарри Поттер ©   (2006-11-18 14:29) [14]

> ЗЫ все ругают студентов за вопросы, но на вопросы сложнее
> студенческих ответить не могут... парадокс

"Вопросы заданые студентами" и "вопросы заданые студентам" - совершенно разные вещи. т.к. часто студенты сами не понимают о чем спрашивают.


 
Piter ©   (2006-11-18 14:37) [15]

детский развод какой-то.

Tirael ©   (18.11.06 4:56)
готов признать что вы крутые программеры

Tirael ©   (18.11.06 4:56)
если посоветуете что нить полезное...


пипец... При такой постановке вопроса в жизнь ничего не посоветую, если только пойти кое-куда на неопределенный срок.


 
Tirael ©   (2006-11-18 15:10) [16]

2KilkennyCat у меня высшее но я не программер


> Piter ©   (18.11.06 14:37) [15]
>
> детский развод какой-то.


как ни странно сработал, ссылок дали, а тогда ничего не здали (


 
KilkennyCat ©   (2006-11-18 15:13) [17]

> [16] Tirael ©   (18.11.06 15:10)
> 2KilkennyCat у меня высшее но я не программер


И что?
ИМХО, ты путаешь наличие диплома с образованием. Говори честно - "у меня есть диплом о высшем образовании".


 
Tirael ©   (2006-11-18 15:19) [18]

2KilkennyCat я тебя не понял, диплом у меня есть, но совсем в другой области, и информатику нам преподавали в обьеме проги на бейсике строк в 10 длиной


 
KilkennyCat ©   (2006-11-18 15:23) [19]

> [18] Tirael ©   (18.11.06 15:19)

Просто человек с высшим образованием общается по-другому. Он, скажем так, умнее.


 
MsGuns ©   (2006-11-18 16:04) [20]

>KilkennyCat ©   (18.11.06 15:23) [19]
>Просто человек с высшим образованием общается по-другому. Он, скажем так, умнее.

Нет. ОбразОванее. А это совсем иное.


 
Anatoly Podgoretsky ©   (2006-11-18 16:27) [21]

> MsGuns  (18.11.2006 16:04:20)  [20]

Да нет у него высшего образования, разве не видно.


 
Rouse_ ©   (2006-11-18 17:04) [22]


> я задавал както ворос про прокси, про локальный, про тот
> к которому обращаются по 127.0.0.1... как его сделать?

делаешь слушающий сервер и транслируешь данные дальше... в чем проблема то? пример нужен или информация?


 
Palladin ©   (2006-11-18 17:08) [23]


> [22] Rouse_ ©

Программа нужна, что бы откомпилировал и заработало. Он бы потом ее продавал и получал деньги.


 
Tirael ©   (2006-11-18 17:15) [24]

Rouse_ вообщето и то и другое, все чего не жалко. я делал как ты говоришь, но были загвоздки, короч не вышло ничего, я приводил тут свои идеи и описания загвоздок, так никто и не ответил толком, решил не лезть со своим, спросить у народа, мож кто чем поделится...


 
Gero ©   (2006-11-19 00:08) [25]

> [21] Anatoly Podgoretsky ©   (18.11.06 16:27)
> Да нет у него высшего образования, разве не видно.

Именно. У него диплом.


 
Anatoly Podgoretsky ©   (2006-11-19 00:35) [26]

> Gero  (19.11.2006 0:08:25)  [25]

И я про тоже


 
Rouse_ ©   (2006-11-19 00:36) [27]

НА вот тебе от Сергея пример:

{*******************************************************}
{                                                       }
{                  HTTP Proxy Server                    }
{                                                       }
{         Copyright (c) 2002 Sergey Polevikov           }
{                                                       }
{*******************************************************}

program proxy;
{$APPTYPE CONSOLE}
uses
 SysUtils, Windows, Winsock, Classes;

type TCompletionPort=class
 public
   FHandle:THandle;
   constructor Create(dwNumberOfConcurentThreads:DWORD);
   destructor Destroy;override;
   function AssociateDevice(hDevice:THandle;dwCompKey:DWORD):boolean;
 end;

 TAcceptThread=class(TThread)
 private
   FListenSocket:TSocket;
   FListenPort:Word;
   FClientList:TList;
   procedure GarbageCollect;
 protected
   procedure Execute;override;
 public
   constructor Create(AListenPort:Word);reintroduce;
   destructor Destroy;override;
 end;

type TClientThread=class(TThread)
 public
   procedure Execute;override;
 end;

type TClient=class
 private
   FSocket:TSocket;
   FEvent:THandle;
   ov:POVERLAPPED;
   Buffer:Pointer;
   BufSize:Cardinal;
   procedure Write(Buf:Pointer;Size:Cardinal);
 public
   FOppositeClient:TClient;
   FLastActivity:double;
   constructor Create;
   destructor Destroy;override;
   procedure Connect(ARequest:string);
   procedure Disconnect;
   procedure Complete(dwNumBytes:Cardinal);virtual;abstract;
 end;

 TInternalClient=class(TClient)
 public
   procedure Complete(dwNumBytes:Cardinal);override;
 end;

 TExternalClient=class(TClient)
 public
   procedure Complete(dwNumBytes:Cardinal);override;
 end;

//-------------------------------implementation-------------------------------

var
 FCompPort:TCompletionPort;

procedure LWrite(Text: String; Color: Word; BreakLine: Byte);
var
  tmpColor: Word;
  sbinfo: _CONSOLE_SCREEN_BUFFER_INFO;
begin
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), sbinfo);
    tmpColor:= sbinfo.wAttributes;
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), Color);
    if Boolean(BreakLine) then WriteLn(Text) else Write(Text);
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), tmpColor);
end;

{ TCompletionPort }

constructor TCompletionPort.Create(dwNumberOfConcurentThreads: DWORD);
begin
 FHandle:=CreateIoCompletionPort(INVALID_HANDLE_VALUE,0,0,dwNumberOfConcurentThre ads);
end;

function TCompletionPort.AssociateDevice(hDevice: THandle;
 dwCompKey: DWORD): boolean;
begin
 result:=CreateIoCompletionPort(hDevice,FHandle,dwCompKey,0)=FHandle;
end;

destructor TCompletionPort.Destroy;
begin
 CloseHandle(FHandle);
 inherited;
end;

{ TAcceptThread }

constructor TAcceptThread.Create(AListenPort: Word);
begin
 inherited Create(false);
 FListenPort:=AListenPort;
 FClientList:=TList.Create;
end;

destructor TAcceptThread.Destroy;
begin
 FClientList.Free;
 inherited;
end;

procedure TAcceptThread.GarbageCollect;
var
 AClient:TClient;
 i:integer;
begin
 for i:=0 to FClientList.Count-1 do begin
   AClient:=TClient(FClientList[i]);
   if Assigned(AClient) then
     if (AClient.FSocket=INVALID_SOCKET) and ((now-AClient.FLastActivity)>7E-4) then
   begin
     FClientList[i]:=nil;
     if Assigned(AClient.FOppositeClient) then AClient.FOppositeClient.Free;
     AClient.Free;
   end;
 end;
 FClientList.Pack;
 FClientList.Capacity:=FClientList.Count;
end;


 
Rouse_ ©   (2006-11-19 00:37) [28]

procedure TAcceptThread.Execute;
var
 FAddr: TSockAddrIn;
 Len: Integer;
 ClientSocket:TSocket;
 InternalClient:TClient;
begin
 FListenSocket := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
 FAddr.sin_family := PF_INET;
 FAddr.sin_addr.s_addr := INADDR_ANY;
 FAddr.sin_port := htons(FListenPort);
 bind(FListenSocket, FAddr, SizeOf(FAddr));
 listen(FListenSocket, SOMAXCONN);
 try
   while not Terminated do begin
     Len:=sizeof(FAddr);
     ClientSocket:=accept(FListenSocket, @FAddr, @Len);
     try
       GarbageCollect;
       if ClientSocket<>INVALID_SOCKET then begin
         InternalClient:=TInternalClient.Create;
         InternalClient.FSocket:=ClientSocket;
         FClientList.Add(InternalClient);
         FCompPort.AssociateDevice(InternalClient.FSocket,Cardinal(InternalClient));
         InternalClient.Complete(0);
       end;
     except end;
   end;
 finally
   shutdown(FListenSocket,2);
   closesocket(FListenSocket);
 end;
end;

{ TClientThread }

procedure TClientThread.Execute;
var
 CompKey,dwNumBytes:Cardinal;
 ov:POVERLAPPED;
begin
 try
   while not Terminated do begin
     if GetQueuedCompletionStatus(FCompPort.FHandle,dwNumBytes,CompKey,ov,INFINITE) and (dwNumBytes>0) then
     begin
       if TClient(CompKey).FSocket<>INVALID_SOCKET then begin
         TClient(CompKey).Complete(dwNumBytes);
         TClient(CompKey).FLastActivity:=now;
       end;
     end else
       TClient(CompKey).Disconnect;
   end;
 except
   TClientThread.Create(false);
 end;
end;

{ TClient }

constructor TClient.Create;
begin
 FSocket:=INVALID_SOCKET;
 BufSize:=8192;
 GetMem(Buffer,BufSize);
 new(ov);
 ov.Internal:=0;
 ov.InternalHigh:=0;
 ov.Offset:=0;
 ov.OffsetHigh:=0;
 ov.hEvent:=0;
 FEvent:=CreateEvent(nil,true,false,nil);
 FLastActivity:=now;
end;

destructor TClient.Destroy;
begin
 Disconnect;
 CloseHandle(FEvent);
 FreeMem(Buffer);
 Dispose(ov);
 inherited;
end;

////////////////////////////////////////////////////////////////////////////////
//
//  Прием запроса на подключение к удаленному хосту

procedure TClient.Connect(ARequest: string);
var
 f,t:integer;
 ARemoteAddress:string;
 ARemotePort:string;
 he:PHostEnt;
 FAddr:TSockAddrIn;
begin
 f:=Pos("/",ARequest)+2;
 t:=Pos("HTTP",ARequest)-1;
 ARemoteAddress:=Copy(ARequest,f,t-f);
 t:=Pos("/",ARemoteAddress);
 if t<>0 then ARemoteAddress:=Copy(ARemoteAddress,0,t-1);
 t:=Pos(":",ARemoteAddress);
 if t<>0 then begin
   ARemotePort:=Copy(ARemoteAddress,t+1,Length(ARemoteAddress)-t);
   ARemoteAddress:=Copy(ARemoteAddress,0,t-1);
 end else
   ARemotePort:="80";
 WriteLn("Trying to connect: "+ ARemoteAddress);
 he:=GetHostByName(PChar(ARemoteAddress));
 if not Assigned(he) then exit;
 ARemoteAddress:=inet_ntoa(PInAddr(he.h_addr_list^)^);

 FSocket:=socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
 FAddr.sin_family:=PF_INET;
 FAddr.sin_addr.s_addr :=inet_addr(PChar(ARemoteAddress));
 try
   FAddr.sin_port := htons(StrToInt(ARemotePort));
   if WinSock.connect(FSocket, FAddr, SizeOf(FAddr))=SOCKET_ERROR then FSocket:=INVALID_SOCKET;
 except
   WriteLn("Connection failed");
 end;
end;


 
Rouse_ ©   (2006-11-19 00:37) [29]

procedure TClient.Disconnect;
begin
 if FSocket<>INVALID_SOCKET then begin
   shutdown(FSocket,2);
   closesocket(FSocket);
   FSocket:=INVALID_SOCKET;
   if Assigned(FOppositeClient) then FOppositeClient.Disconnect;
 end;
end;

procedure TClient.Write(Buf: Pointer; Size: Cardinal);
var
 BytesWrite:Cardinal;
begin
 ov.hEvent:=FEvent or 1;
 WriteFile(FSocket,Buf^,Size,BytesWrite,ov);
 ov.hEvent:=0;
end;

{ TInternalClient }

procedure TInternalClient.Complete(dwNumBytes: Cardinal);
var
 BytesRead:Cardinal;
begin
 if dwNumBytes>0 then begin
   if not Assigned(FOppositeClient) then begin
     FOppositeClient:=TExternalClient.Create;
     FOppositeClient.FOppositeClient:=self;
     FOppositeClient.Connect(PChar(Buffer));
     if FOppositeClient.FSocket=INVALID_SOCKET then begin
       Disconnect;
       exit;
     end;
     FCompPort.AssociateDevice(FOppositeClient.FSocket,Cardinal(FOppositeClient));
     FOppositeClient.Complete(0);
   end;
   FOppositeClient.Write(Buffer,dwNumBytes);
 end;
 ReadFile(FSocket,Buffer^,BufSize,BytesRead,ov);
end;

{ TExternalClient }

procedure TExternalClient.Complete(dwNumBytes: Cardinal);
var
 BytesRead:Cardinal;
begin
 if dwNumBytes>0 then FOppositeClient.Write(Buffer,dwNumBytes);
 ReadFile(FSocket,Buffer^,BufSize,BytesRead,ov);
end;

{ Graphik}

const
 ClientThreadCount:integer=8;
 ListenPort:Dword=80;

var
 WSAData:TWSAData;
 Cnt:Cardinal;
 i:integer;
 Buff: array [0..10] of char;
 ConsoleText: String;
begin
 LWrite("Prepare to work:",FOREGROUND_GREEN or FOREGROUND_INTENSITY,0);
 Writeln("");
 LWrite("=======================",FOREGROUND_GREEN or FOREGROUND_INTENSITY,0);
 Writeln("");
 LWrite("Create main socket:",FOREGROUND_RED or FOREGROUND_INTENSITY,0);
 FCompPort:=TCompletionPort.Create(ClientThreadCount);
 LWrite(" Ok",FOREGROUND_RED or FOREGROUND_INTENSITY,0);
 Writeln("");
 if FCompPort.FHandle<>0 then begin
   LWrite("Initialise:",FOREGROUND_RED or FOREGROUND_INTENSITY,0);
   WSAStartup($0101, WSAData);
   LWrite(" Ok",FOREGROUND_RED or FOREGROUND_INTENSITY,0);
   Writeln("");
   LWrite("Create main threads:",FOREGROUND_RED or FOREGROUND_INTENSITY,0);
   for i:=0 to ClientThreadCount-1 do TClientThread.Create(false);
   TAcceptThread.Create(ListenPort);
   LWrite(" Ok",FOREGROUND_RED or FOREGROUND_INTENSITY,0);
   Writeln("");
   LWrite("=======================",FOREGROUND_GREEN or FOREGROUND_INTENSITY,0);
   Writeln("");
   LWrite("Proxy activate",FOREGROUND_GREEN or FOREGROUND_INTENSITY,0);
   Writeln("");
   LWrite("=======================",FOREGROUND_GREEN or FOREGROUND_INTENSITY,0);
   Writeln("");
   repeat
     ReadConsole(GetStdHandle(STD_INPUT_HANDLE),@Buff,10,Cnt,nil);
     ConsoleText := String(Buff);
   until UpperCase(Copy(ConsoleText,1,4)) = "EXIT";
   WSACleanup;
 end;
end.


 
Gero ©   (2006-11-19 00:38) [30]

> [27] Rouse_ ©   (19.11.06 00:36)

Теперь тебя признают крутым программером!


 
Anatoly Podgoretsky ©   (2006-11-19 00:40) [31]

> Gero  (19.11.2006 0:38:30)  [30]

Раскрутили :-)
На слабо взяли.


 
Rouse_ ©   (2006-11-19 00:42) [32]


> Теперь тебя признают крутым программером!

Вот блин, и что теперь делать? ;)


 
Anatoly Podgoretsky ©   (2006-11-19 01:00) [33]

> Rouse_  (19.11.2006 0:42:32)  [32]

А теперь поздно пить Боржоми.


 
KilkennyCat ©   (2006-11-19 01:05) [34]

> [33] Anatoly Podgoretsky ©   (19.11.06 01:00)

ЕссентУкки круче :)))


 
Юрий Зотов ©   (2006-11-19 01:07) [35]

> Rouse_ ©   (19.11.06 00:42) [32]

Ни фига ты, Розыч, не крутой программер. А еще спрашиваешь, что теперь делать.

Делать остается только одно - ехать в Бабруйск, там выпить йаду и убить сибя ап стену.
:о)


 
Rouse_ ©   (2006-11-19 01:14) [36]

Эка тебя Юр на Жаве в последнюю неделю развезло :) То 64-ую базу спрашиваешь, то бабруйск советуешь :) Ты ли это?


 
Rouse_ ©   (2006-11-19 01:16) [37]

Контрользый вопрос для Юры Зотова (сомнения закрались) - в 2004 году в ванне сломалась штучка у тебя. Как называлась эта чтучка? :)


 
Anatoly Podgoretsky ©   (2006-11-19 01:18) [38]

> Rouse_  (19.11.2006 1:16:37)  [37]

:-)


 
KilkennyCat ©   (2006-11-19 01:27) [39]

> сломалась штучка у тебя


:))


 
Плохиш ©   (2006-11-19 01:32) [40]


> Rouse_ ©   (19.11.06 01:14) [36]
> Эка тебя Юр на Жаве в последнюю неделю развезло

Если на жаве, то точно он. На ней ещё не так развезти может :-( Я теперь понял, почему iZen такой злой...



Страницы: 1 2 вся ветка

Текущий архив: 2006.12.10;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.039 c
2-1164220218
zep
2006-11-22 21:30
2006.12.10
TClientDataSet


5-1144928569
BPK
2006-04-13 15:42
2006.12.10
Как создать редактор свойства как для TDBGrid.Columns ?


15-1163422460
Игорь Ситиков
2006-11-13 15:54
2006.12.10
Контакты сайта


2-1163994363
Palarm
2006-11-20 06:46
2006.12.10
Линия


15-1163963893
radium
2006-11-19 22:18
2006.12.10
Как побороть троян?