Accueil
Les outils informatiques
Hors ligne
HEAD, pour savoir qui répond quoi
Les outils informatiques
Hors ligne
HEAD, pour savoir qui répond quoi | HEAD, pour savoir qui répond quoi |
|
HEADUne petite application toute simple qui envoie une requête HEAD avec un Socket.. et vous informe de la réponse. Autrement dit cela permet de savoir vers quel type (MIME) de fichier un lien vous mène. Donnez simplement l'URL dans la ligne de commande pour HEAD.exe , par exemple : head.exe http://www.monsite.com/ , ou bien entrez cette URL dans la zone de saisie et pressez la touche "Entrer". Les sources sont téléchargeables ici ! Le fichier principal des sources (en Delphi) : Code: ( delphi ) unit Unit1; interface uses Windows, SysUtils, Classes, Controls, Forms, StdCtrls, ScktComp, ExtCtrls; type TF = class(TForm) M: TMemo; P: TPanel; B1: TButton; B2: TButton; E: TEdit; CB: TComboBox; EP: TEdit; procedure B2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure B1Click(Sender: TObject); procedure E1KeyPress(Sender: TObject; var Key: Char); private CS: TClientSocket; function Break_URL(Value: String): Boolean; procedure CSConnect(Sender: TObject; Socket: TCustomWinSocket); procedure CSRead (Sender: TObject; Socket: TCustomWinSocket); procedure CSErr (O: TObject; S: TCustomWinSocket; EE:TErrorEvent; var EC:Integer); public end; var F: TF; implementation {$R *.dfm} function TF.Break_URL(Value: String): Boolean; var I: Integer; begin Result := False; I := Pos('//',Value); if Copy(Value,1,I-1) = 'http:' then I := 80 else if Copy(Value,1,I-1) = 'https:' then I := 443 else if Copy(Value,1,I-1) = 'ftp:' then I := 21 else I := 0; if I <> 0 then begin Result := True; EP.Text := IntToStr(I); CB.Text := Trim(Copy(Value,Pos('//',Value)+2,1000)); I := Pos('/',CB.Text); if I > 0 then begin E.Text := Copy(CB.Text,I,1000); CB.Text := Copy(CB.Text,1,I-1); end; end; end; procedure TF.CSConnect(Sender: TObject; Socket: TCustomWinSocket); begin if CS.Active then begin Caption := 'Connected'; CS.Socket.SendText('HEAD '+E.Text+' HTTP/1.1'#13#10+ 'Host: '+CS.Host+#13#10#13#10); end else begin Caption := 'HEAD /'; M.Lines.Add('----------------------------------------------'); end; end; procedure TF.CSRead(Sender: TObject; Socket: TCustomWinSocket); var S: String; begin S := Trim(CS.Socket.ReceiveText); if Length(S) > 0 then M.Lines.Add(S); end; procedure TF.CSErr(O:TObject;S:TCustomWinSocket;EE:TErrorEvent;var EC:Integer); var ErrMsg: String; begin ErrMsg := '/!\ ERROR: '; case EE of eeGeneral : ErrMsg := ErrMsg + 'General'; eeSend : ErrMsg := ErrMsg + 'Send'; eeReceive : ErrMsg := ErrMsg + 'Receive'; eeConnect : ErrMsg := ErrMsg + 'Connect'; eeDisconnect: ErrMsg := ErrMsg + 'Disconnect'; eeAccept : ErrMsg := ErrMsg + 'Accept'; eeLookup : ErrMsg := ErrMsg + 'Lookup'; else ErrMsg := ErrMsg + '???'; end; M.Lines.Add(ErrMsg); EC := 0; end; procedure TF.B2Click(Sender: TObject); begin CS.Close; M.Clear; Caption := 'HEAD /'; end; procedure TF.FormCreate(Sender: TObject); begin // DoubleBuffered := True; EP.Hint := 'The port number:'#13'21 = FTP'#13'80 = HTTP'#13'443 = HTTPS'; CS := TClientSocket.Create(NIL); CS.OnConnect := CSConnect; CS.OnRead := CSRead; CS.OnDisconnect := CSConnect; CS.OnError := CSErr; if (ParamCount > 0) and Break_URL(ParamStr(1)) then B1.Click; end; procedure TF.FormDestroy(Sender: TObject); begin CS.Free; end; procedure TF.B1Click(Sender: TObject); begin if CS.Active then Sleep(1000); Application.ProcessMessages; if CS.Active then CS.Close; CB.Text := Trim(CB.Text); E.Text := Trim(E.Text); Break_URL( CB.Text); CS.Host := CB.Text; CS.Port := StrToIntDef(EP.Text,80); EP.Text := IntToStr(CS.Port); CS.Open; M.Lines.Add(''); M.Lines.Add('---[ '+CB.Text+' ('+EP.Text+') '+E.Text+' ]'+ '---[ '+TimeToStr(Time)+' ]---'); if CB.Items.IndexOf(CB.Text) = -1 then CB.Items.Add(CB.Text); end; procedure TF.E1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then B1.Click else if Key = #27 then B2.Click; end; end. |
| < Précédent | Suivant > |
|---|


