Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.044 c
2-1164101702
Cyrax
2006-11-21 12:35
2006.12.10
Объекты сигнального типа...


15-1164026394
Rembo
2006-11-20 15:39
2006.12.10
Интерпритатор скриптов


2-1164375225
SergeyP
2006-11-24 16:33
2006.12.10
Как проиграть mailbeep?


4-1154450987
Destroyer
2006-08-01 20:49
2006.12.10
Ключ HKEY_USERS


3-1159721176
DimDim
2006-10-01 20:46
2006.12.10
Перекрестный запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский