Ver Mensaje Individual
  #3  
Antiguo 12-05-2006
liadsoft liadsoft is offline
Miembro
 
Registrado: may 2006
Posts: 12
Reputación: 0
liadsoft Va por buen camino
Código

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.
Responder Con Cita