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 :

parseur d'URL : url => ( host, port, path)


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 100
    Points : 49
    Points
    49
    Par défaut parseur d'URL : url => ( host, port, path)
    Bonjour

    J'ai besoin d'une fonction qui donne le nom du host (ou addresse IP) , le numero du port et l'addresse du path

    cad
    char * url_parse(char* url, char * hostname, uint16_t * port)
    exemple d'appel 1
    char hostname [100];
    uint16_t port;
    char* path = url_parse("http://serveur/test", hostname, &port)
    la valeur retourne sera "/test"
    hostname = "serveur"
    port = 80

    exemple d'appel 2
    char hostname [100];
    uint16_t port;
    char* path = url_parse("http://192.168.1.10:6666/test/test2", hostname, &port)
    la valeur retourne sera "/test/test2"
    hostname = "192.168.1.10"
    port = 6666

    Est-ce qu'il ya librairie standard qui resoud mon probleme?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Tiens, cadeau, c'est tout fait

    MCR_STRING = CString
    MCR_U4 = unsigned long
    MCR_U2 = unsigned short
    EMPTY_STR = ""

    C'est basé sur WinHttpCrackUrl() : http://msdn2.microsoft.com/en-us/lib...92(VS.85).aspx

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    bool CMcrHttp::ParseUrl(MCR_CSTR Url,
    						MCR_STRING & ServiceType,
    						MCR_STRING & Server,
    						MCR_STRING & Object,
    						MCR_U2 & Port)
    {
    	// initialize the returned data
    	ServiceType = EMPTY_STR;
    	Server = EMPTY_STR;
    	Object = EMPTY_STR;
    	Port = 0;
     
    	// Initialize the URL_COMPONENTS structure.
    URL_COMPONENTS urlComp;
    	memset(&urlComp, 0, sizeof(urlComp));
    	urlComp.dwStructSize = sizeof(urlComp);
     
    	// Set required component lengths to non-zero so that they are cracked.
    	urlComp.dwSchemeLength		= (MCR_U4)-1;
    	urlComp.dwHostNameLength	= (MCR_U4)-1;
    	urlComp.dwUrlPathLength		= (MCR_U4)-1;
     
    	// parse the URL
    	if(WinHttpCrackUrl(Url, _tcslen(Url), 0, & urlComp) == FALSE)
    	{
    		ERREUR(L"An error in WinHttpCrackUrl()");
    		ASSERT(FALSE);
    		return false;
    	}
     
    	// return the values
    	Port = urlComp.nPort;
     
    	// get the scheme
    	if(urlComp.dwSchemeLength != 0)
    	{
    		ServiceType = MCR_STRING(urlComp.lpszScheme, urlComp.dwSchemeLength);
    	}
     
    	// get the server
    	if(urlComp.dwHostNameLength != 0)
    	{
    		Server = MCR_STRING(urlComp.lpszHostName, urlComp.dwHostNameLength);
    	}
     
    	// get the url
    	if(urlComp.dwUrlPathLength != 0)
    	{
    		Object = MCR_STRING(urlComp.lpszUrlPath, urlComp.dwUrlPathLength);
    	}
     
    	return true;
    }

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Merci pour le code

    Mais j'ai oublie de preciser que ma plateforme de developpmenet est linux

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    tant pis, désolé

Discussions similaires

  1. Réécriture d'url et virtual hosts
    Par arnonyme75 dans le forum Apache
    Réponses: 1
    Dernier message: 02/09/2014, 21h42
  2. req.url ne contient que le path
    Par Manu300886 dans le forum NodeJS
    Réponses: 7
    Dernier message: 12/02/2013, 11h00
  3. [URL rewriting] Changement de port
    Par florian. dans le forum Apache
    Réponses: 8
    Dernier message: 16/07/2010, 09h50
  4. URL Rewrinting java tomcat Port:9080
    Par abanote dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/11/2007, 15h59

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