PDA

Ver la Versión Completa : idtcpserver + idtcpclient (proxy)


Enan0
02-12-2004, 16:25:43
Hola amigos bueno debido a que al idmappedport no le e podido entontrar la vuelta. estoy intentando hacerlos con sockets.
mi idea es hacer una especie de PROXY, que me valla leguendo el contenido del buffer. el tema es que con los componentes Internet (sockserver y client) lo puedo hacer. ante la escritura en un socket se lo paso al otro y viceversa. y esto funciona. solo que tengo un problema. cuando una pagina me pide multiples conexiones como suelen hacer para descargar imagenes. produce un error. aparte estos componentes hay veces que no registran el envento onwrite.. entonces se me dio por usar los de indy, y que manejan hilos.. y bueno hace unos dias que estoy trabado. porque no puedo pasar lo que recibe el sockserver al cliente (para qeu lo pase al router) y viceversa..

pego el codigo aver si alguien me ayuda...


procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
algo:string;

begin
algo :=atHRead.Connection.CurrentReadBuffer;
IF NOT IdTCPClient1.Connected THEN IdTCPClient1.Connect;
memo1.Lines.Add(algo);
IdTCPClient1.WriteLn(algo);
end;

procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
Memo1.Lines.Add('conectado con el server');
end;

procedure TForm1.IdTCPClient1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
var
algo:string;
begin
case AWorkMode of
wmread: begin
algo:=(idtcpclient1.CurrentReadBuffer);
memo1.Lines.Add(algo);
end;
wmWrite:begin

end;
end;
end;

procedure TForm1.IdTCPClient1WorkBegin(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCountMax: Integer);
begin

case AWorkMode of
wmRead: begin
MEMO1.Lines.ADD('RECIBO DESDE INTERNET');
End;
wmWrite:begin
memo1.Lines.Add('ENVIO AL BROWSER');
END;
END;
end;


PD: perdon si hay algun error grosero por es que he ido probando de todo y bueno... deje los nombres strandar de los componentes para que sea mas facil. gracias

GRacias..

Enan0
02-12-2004, 16:28:54
aca esta solo lo que puedo recibir que es lo que contiene el Buffer del SERVER. en teste caso es la peticion de la pagina

192.168.0.20
conectado con el server
GET http://www.google.com.ar/ HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: es-ar
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: www.google.com.ar
Proxy-Connection: Keep-Alive