Se connecter au web

shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 - 5 nov. 2009 à 11:22
 Utilisateur anonyme - 9 nov. 2009 à 00:03
Salut à tous !!

Alors voilà mon soucis du jour:

J'ai un logiciel qui marche en résidant (icone en bas a droit), une fois ce logiciel lancé en allant sur http://127.0.0.1/index.html j'ai accès à index.html.

Mais voilà j'aimerai que sa soit plutôt sur internet et non en local, donc j'ai un hébergeur mais là c'est le fouillis complet!

Comment dans mon Delphi je paramètre pour que mon logiciel se connecte a mon hébergeur?
Comment je peut lui envoyé index.html pour que l'hébergeur l'affiche ?

merci

14 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
5 nov. 2009 à 13:35
"en allant sur" : de quelle maniere ?
"j'ai acces à" : le code source ? dans un navigateur web ?

Merci de donner des details
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
5 nov. 2009 à 14:02
Quand je vais sur le navigateur à l'adresse 127.0.0.1 (donc mon pc), le navigateur communique avec mon logiciel et mon logiciel envoi la page 'index.html'

Mais maintenant je voudrais passer par internet donc j'ai un hébergeur mais je ne sais quoi faire :/
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
5 nov. 2009 à 14:12
"Le navigateur" : firefox, IE8 etc ? Ou bien un TWebBrowser dans ton appli ?
"communique" : de quelle manière ?
"mon logiciel envoie la page" : comment ?

As tu du code à nous montrer ? (réponds aussi aux questions !)
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
5 nov. 2009 à 14:28
Navigateur chrome
J'utilise un serveur socket et un client socket

J'ai rajouter des commentaire pour que vous essayez d'y voir plus clair dans mon code lol

...
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
Var F: TextFile;

begin
 ServerSocket1.Open;        // j'ouvre le serveur
AssignFile(F,ExtractFilePath(Application.ExeName)+'index.html');
end;

// je ferme le serveur et client
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Shell_NotifyIcon(Nim_DELETE,@tray); //Supprime le tray icon
    ServerSocket1.Close;      // ferme serveur
    ClientSocket1.Close;      // ferme client
end;



procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Connexion du client ' + Socket.RemoteHost);
  // on indique que un client c'est connecté

end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Déconnexion du client ' + Socket.RemoteHost);
  // on indique que un client c'est déconnecté
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var s: string;
begin
  s := Socket.ReceiveText;
  if pos('GET /', s) = 1 then begin
    Button4.Click;
  end;
  Memo1.Lines.Add(s);   // on reçoit le texte dans memo1
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.SendText('GET /modembyben.alwaysdata.net HTTP/1.1'#13#10#13#10);
end;


procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(socket.ReceiveText);
end;

procedure TForm1.Button4Click(Sender: TObject);
Var fichier: TStringList;
    size: integer;
begin
  fichier := TStringList.Create;
  fichier.LoadFromFile('index.html');
  size := length(fichier.Text);
  fichier.Insert(0, 'HTTP/1.1 200 OK');
  fichier.Insert(1, 'Content-Type : text/HTML');
  fichier.Insert(2, 'Content-Length : ' + IntToStr(size));
  fichier.Insert(3, '');
  Memo1.Lines.Add(fichier.Text);
  ServerSocket1.Socket.Connections[0].SendText(fichier.Text);
  fichier.Free;
end;


end.


Voilà c'est trés flou, mais je ne m'aitrise pas encore l'histoire d'internet :/
ET sur mon appli j'ai donc un serveursocket un client socket un memo (qui affiche ce que transmet le navigateur ) et un bouton
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
5 nov. 2009 à 14:42
En faite mon but serait que mon logiciel envoi un .html (présent dans l'ordinateur) à un site (mon hebergeur) et que l'hebergeur l'affiche.
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
5 nov. 2009 à 14:53
A ta place je ferais plus simple pour choper un code source d'une URL :
Voici mon test :
1) Nouvelle application
2) Je pose un TMemo
3) Je pose un TEdit
4) Je pose un TButton
5) Je pose un TActionList
6) Doucle clic sur le TActionList
7) Je fais Ctrl+Insert (Nouvelle action standard)
8) Dans la catégorie "Internet" je choisis "TDownloadURL"
9) Sur le bouton je mets ce code :
procedure TForm1.Button1Click(Sender: TObject);
begin
  DownLoadURL1.URL:= edit1.Text; // L'url est le contenu du Edit
  DownLoadURL1.Filename:= ExtractFilePath(Application.ExeName)+'temp.html'; // Le fichier dans lequel sera téléchargé la page
  if DownLoadURL1.Execute then // execution du download
  begin
    memo1.Clear; // efface le memo
    if FileExists(DownLoadURL1.Filename) then // si le fichier existe
    begin
      memo1.Lines.BeginUpdate; // on commence l'update des lignes
      memo1.Lines.LoadFromFile(DownLoadURL1.Filename); // on charge le fichier
      memo1.Lines.EndUpdate; // fin de l'update
    end
    else Showmessage('Erreur de DL'); // sinon erreur
  end
  else Showmessage('Erreur de DL'); // sinon erreur
end;


Merci de tester :)
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
5 nov. 2009 à 14:54
Désolé j'ai posté après toi mais je n'avais pas encore lu :
Ce que tu evux c'est envoyer un fichier en FTP alors !
Regarde du coté des composants INDY (D6+)
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
5 nov. 2009 à 15:00
Les composants INDY ? quelqu'un pourrai m'expliquer comment il fonctionne car je n'y connais rien et sa m'intéresse
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
5 nov. 2009 à 15:03
Ils ont une documentation et des centaines de projets d'exemple !
Google it :)
0
shadow578 Messages postés 102 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 27 juin 2011 1
5 nov. 2009 à 15:08
Mais le truc c'est que j'aimerai bien utiliser socketclient et socket serveur mon code:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ImgList, inifiles, Registry, Shellapi,
  MPlayer, Grids, jpeg, StrUtils, ComCtrls, XPMan, ScktComp, Menus, Sockets;

const wm_AppelMessage=wm_user+1;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Quitter1: TMenuItem;
    Ouvrirfichier1: TMenuItem;
    Button2: TButton;
    Memo1: TMemo;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Button4: TButton;

    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button4Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);

  private
{ Déclarations privées }

  public
{ Déclaration public}


  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  application.terminate;

end;


procedure TForm1.FormCreate(Sender: TObject);
Var F: TextFile;

begin

     ServerSocket1.Open;        // on ouvre le serveur
     AssignFile(F,ExtractFilePath(Application.ExeName)+'index.html');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

    ServerSocket1.Close;      // ferme serveur
    ClientSocket1.Close;      // ferme client
end;


procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Connexion du client ' + Socket.RemoteHost);

end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Déconnexion du client ' + Socket.RemoteHost);
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var s: string;
begin
  s := Socket.ReceiveText;
  if pos('GET /', s) = 1 then begin
  button4.click;
  end;
  Memo1.Lines.Add(s);
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.SendText('GET /'#13#10#13#10);
end;


procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(socket.ReceiveText);
end;

procedure TForm1.Button4Click(Sender: TObject);
Var fichier: TStringList;
    size: integer;
begin
  fichier := TStringList.Create;
  fichier.LoadFromFile('index.html');
  size := length(fichier.Text);
  fichier.Insert(0, 'HTTP/1.1 200 OK');
  fichier.Insert(1, 'Content-Type : text/HTML');
  fichier.Insert(2, 'Content-Length : ' + IntToStr(size));
  fichier.Insert(3, '');
  Memo1.Lines.Add(fichier.Text);
  ServerSocket1.Socket.Connections[0].SendText(fichier.Text);
  fichier.Free;
end;

end.


Marche très bien mais en local il me suffirait juste de l'envoyer sur l'hebergeur plutot que rester en local

je me demandais si fallais pas gérer avec çà:
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.SendText('GET /'#13#10#13#10);
end;
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
5 nov. 2009 à 22:38
"envoyer" et tu parles de "GET" ?
Puis si nul part il y a un login/pass, tout le monde aurait aces a ton ftp et pourrait modifier le site ?
Voyons ... un peu de réflexion cher ami !
0
Utilisateur anonyme
6 nov. 2009 à 10:55
Salut

Pourquoi vouloir utiliser TSocket et par directement Winsock dans ce cas là ?

Je rejoins Julio : Utilise les composants Indy. Pour rappel les composants TSocket ont parfois un comportement surprenant pour la simple raison qu'ils sont truffés de beugs (Borland préconise du reste de ne pas les utiliser).

Ceci-dit ton code admet pleins de boulettes :

*Pourquoi utilises-tu un serveur alors que tu n'as besoin que d'un client ?

*Le protocole FTP induit qu'il faut utiliser 2 ports : Un pour les commandes textes et un pour les données. Hors ce n'est pas le cas dans ton code

*Pour se connecter à un serveur FTP il faut dans la majorité des cas utiliser un login et un mot de passe pour des raisons de sécurités.

*Ensuite Tu déclares une variable locale (Var F: TextFile;) mais tu ne te sers aucunement de cette variable.

*Ensuite tu utilises un TClientSocket mais à aucun moment tu n'ouvres la connection (Il n'y a pas comme pour le serveur de "Open" bien qu'un "Close" soit présent);

*Ensuite dans ton code c'est le serveur qui envoie le fichier, hors normalement cela devrait être le client.

Si tu veux continuer avec TSocket, tu devrais te documenter sur le protocole FTP, car là à priori il y a beaucoup de choses que tu n'as pas saisis
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
6 nov. 2009 à 10:59
"tu devrais te documenter sur le protocole FTP" : première chose à faire car penser pour voir envoyer un fichier avec un "GET" ça me fait peur.
De plus, ne pas se poser la question du login/pass me fait aussi très peur

Comment ca marche ftp
0
Utilisateur anonyme
9 nov. 2009 à 00:03
Hé ho camarade : tu pourrais te manifester ?
0
Rejoignez-nous