Cita:
Empezado por waltergomez
Si pones el codigo que usas es mas facil darte una mano.
Saludos,
|
Primero le asigno a la instancia del TIdTCPServer, en el evento OnConnect el procedimiento ProxServConnect. Cada vez que algún programa se conecte al servidor por el puerto en el que está escuchando, se ejecutará ese procediemiento.
Al procedimiento se le pasa el objeto AThread del tipo TIdPeerThread.
Al conectarse algún programa, leo el header del request:
str:=AThread.Connection.ReadLn(
#13#10#13#10,5000);
En el procedimiento creo al objeto que va a conectarse a la página pedida
var
Client: TIdTCPClient
(...)
Client:=TIdTCPClient.Create(nil);
Luego envío el request, que si tiene cuerpo, también lo envío.
Después, leo el header (encabezado) de la repuesto
str:=Client.ReadLn(
#13#10#13#10,
15000);
Con una función obtengo si existe el campo Content-Length y si es así la función me devuelve la longitud del cuerpo del mensage:
l:=GetContentLength(str);
If l>0 then begin
//Aquí no hay problema
end else begin
//Aquí es el problema
repeat
Client.CheckForDisconnect(false);
If not Client.Connected then Break;
//Aquí es donde se queda trabado
str:=Client.ReadString(1);
repeat try
AThread.Connection.Write(str);
blRepeat:=false;
except
blRepeat:=false;
AThread.Connection.CheckforDisconnect
;
If not ATHread.Connection.Connected
then raise;
end;
until not blRepeat;
until not Client.Connected;
end;
Bueno, espero que me puedan ayudar. Gracias por todo.