IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Test de lien https


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Par défaut Test de lien https
    Bonjour, je viens vers vous pour un problème un peu spécifique:

    je souhaite tester un grand nombre de lien (environ 500) https (pas de ping de windows) en même temps ou dans un intervale de temps réduit...

    je n'ai jamais utilisé de socket je voudrais savoir quelles classe utiliser pour dans un premier temps tester le lien https et avoir une réponse (true/false) si le lien répond ou pas .

    Dans un second temps, exécuter ces test sur 500 liens différents ?

    merci beaucoup

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Soit un socket http://msdn2.microsoft.com/fr-fr/lib...84(VS.80).aspx (exemple en fin de page) sur le port HTTPS
    Ou sinon la classe HttpRequest http://msdn2.microsoft.com/en-us/lib...tprequest.aspx mais ça c'est plutot si tu veux interroger ton serveur HTTP

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Par défaut
    En fait, je voudrais juste intéroger mon serveur https sans échanger de données, je voudrais juste savoir si il répond...

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben regarde l'exemple sur la msdn avec les sockets et adapte le, c'est pas très compliqué.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Par défaut
    je vais essayer mais je débute, je vais me lancer... Comment est ce que je pourrais faire pour tester plusieurs lien en même temps ? faire du quasi temps réel ?

    je cré une socket par test mais estce que je peux en ouvrir plusieurs en même temps ?

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Une connexion est très rapide, tu n'a qu'à faire un boucle et créer autant de socket que de test que tu veux faire.

    Il y aurai la solution des threads, mais beaucoup trop couteux donc n'y pense pas (c'est mon avis).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pour i = 0 jusqu'à i = 5000
        ouvrir socket
        tester socket
        i++
    fin pour

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Dans la mesure ou tu veux faire un test de réponse
    tu envoie une requete GET, et t'attend sagement la réponse du serveur. S'il est pa d'accord ou s'il est d'accord tu recevra une réponse
    HTTP/1.1 200 OK
    ou un truc dans le genre, donc tu peux très bien utiliser HttpRequest.

    Si tu le fait avec les Sockets tu va devoir lire toi meme ce qui est récupéré et le parser... pas top, enfin pas compliqué non plus cela dit. et il faudra que tu gère le timeout...

    Pour la concurrence des 500 tests... les threads.
    Le problème c'est que si tu fait ouvrir 500 threads au système comme ca d'un coup... il va pas aimer et va prendre un peu de temps... donc utilise les threads de la pool de threads
    ThreadPool a qui tu peux attribuer une tâche.

    tu prend une file de nom/ip a tester et tu prend un simple objet (object) que tu instancie pour servir de monitor d'exclusion mutuelle.

    dans un premier temps tu instancie la file et y met tous le noms à tester.

    Puis tu lance 500 threads de pools avec tous la meme tache (meme délégué de callback).
    chacun de ces threads se lock sur l'objet d'exclusion mutuel créé.
    (section lock (objet) { ... })
    dans ce code locké tu met l'accès à la file ou tu dépile le premier élément à tester.
    ensuite en dehors du code locked (après la fin du bloc lock{}) tu fait ton test par httprequest ou socket.
    a la fin tu met le resultat dans une file... ou une stack de sortie que tu va locker aussi pour éviter que tout le monde n'écrive lise en meme temps dedans ca t'évitera des déconvenues.
    une fois fait, le délégué termine normallement et le thread est "libre" et retourne dans la pool a attendre une nouvelle tâche à accomplir.

    avec un thread normal, le code ressemblerais à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    private void Process() 
    {
      string iHost;
      bool iResult;
      lock (m_LockQuery) 
      {
        iHost = m_Queries.Pop();
      }
      /// Tes traitements sur l'host obtenu
     
      lock (m_LockResult)
      {
        iHost = m_Result.Push(new KeyValuePair<string, bool>(iHost, iResult));
      }
    }
    ici tu remarquera que je met une association host, bool pour les résultats histoire de savoir qui est libre et qui ne l'est pas.
    ton autre code qui essaie d'accèder à m_Result pour dépiler les éléments qui s'y trouve et les traiter doit le faire dans un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lock(m_LockResult) { ... }
    également sinon tu risque là aussi de sévères déconvenues.

    voila sur le principe c'est assez simple

  8. #8
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Par défaut Test de lien HTTPS
    J'ai une erreur de certificat quand je teste une url de type :
    https://1.1.1.1:0000
    je voudrais savoir si le lien répond avec de bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
     
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();

Discussions similaires

  1. test un lien http fonctionnel
    Par tintin3158 dans le forum Web
    Réponses: 2
    Dernier message: 23/03/2014, 12h34
  2. [Upload] copier un fichier (lien http) vers mon site
    Par dinver dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2006, 11h21
  3. Test des liens vide sur une base de données
    Par FLANQUART Marie dans le forum ASP
    Réponses: 1
    Dernier message: 10/11/2005, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo