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

MFC Discussion :

Probleme avec CInternetSession / Directshow


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Probleme avec CInternetSession / Directshow
    Bonjour,

    Je developpe actuellement une application pour PDA avec VS 2005 SP1 et Windows Mobile 6 SDK. Cette application permet d'afficher une video (genre camera de surveillance) en temps reel a l'aide d'un filtre Directshow proprietaire via une URL. Je dois aussi recuper une liste d'evenements sur un serveur via, la aussi, une URL. La connexion au serveur pour la video se passe tres bien jusqu'a ce que je me connecte pour recuperer la liste d'evenements. Je peux me connecter plusieurs fois pour recuperer la listes sans probleme. Voici le code que j'utilise :
    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
    55
    #define MAXBUF 2048
     
    CInternetSession Session;
    CHttpConnection * pConnection = NULL;
    CString file, head;
     
    file.Format(L"events.cgi");
    head.Format(L"?mode=read&format=csv");
     
    CHttpFile* pFile1 = NULL;
    char* buffer = NULL;
    UINT nBytesRead = 0;
    DWORD dwStatus;
     
    try
    {
    	char buffer[MAXBUF];
    	pConnection = Session->GetHttpConnection(m_ServerURL, (INTERNET_PORT) 80);
     
    	if (pConnection == NULL)
    		return TRUE;
     
    	pFile1 = pConnection->OpenRequest(1, file, NULL, 1, NULL, NULL, 0);
     
    	if (pFile1 == NULL)
    	{
    		pConnection->Close();
    		delete pConnection;
    		return TRUE;
    	}
     
    	pFile1->AddRequestHeaders(head);
    	pFile1->SendRequest();
    	pFile1->QueryInfoStatusCode(dwStatus);
     
    	nBytesRead = pFile1->Read(buffer, MAXBUF - 1);
    	buffer[nBytesRead] = '\0';
    	parseEventArray(buffer, nBytesRead);
    }
    catch (CInternetException* pEx)
    {
    	WCHAR errmess[256];
    	pEx->GetErrorMessage((LPTSTR)&errmess, 256, NULL);
    	MessageBox(L"Connection Error", L"Error", MB_OK | MB_ICONEXCLAMATION);
    	//catch errors from WinInet
    }
     
    if (pFile1)
    	delete pFile1;
     
    if (pConnection)
    {
    	pConnection->Close();
    	delete pConnection;
    }
    Je me suis appercu que le simple fait de demander une session Internet (CInternetSession Session sans meme ouvrir une connection fait que le filtre n'arrive plus a se connecter au serveur.

    Lorsque je demande au filtre d'ouvrir une nouvelle connection par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AM_MEDIA_TYPE  pmt;
    HRESULT hr;
    hr = pFilter->Load( URL.GetString(), &pmt );
    il n'y a pas d'erreur, mais un peu plus tard, une tache s'arrete avec une erreur -1 et je recois un evenement 0x8020 du gestionnaire d'evenements du graph. 0x20 n'etant pas dans evcode.h, je ne sais pas a quoi cela correspond.

    Y'aurait-il un probleme lorsque deux taches differentes demandent une session internet?

    Si quelqu'un a une idee...

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 396
    Points : 20 507
    Points
    20 507
    Par défaut
    Il faut que tu passes par du multhithreading pour se connecter à Internet sinon tu ne seras jamais synchro

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour Mat.M,

    Merci de ta reponse mais je ne comprends pas bien comment du multithreading pourrait regler mon probleme. Un simple appel a CInternetSession Session; "casse" la connection du filtre (meme dans des taches differentes).

    Quels pourraient etre les problemes de synchro dont tu parles?

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/11/2005, 20h42
  2. [Directshow] probleme avec CoInitializeEx
    Par giova_fr dans le forum Windows
    Réponses: 2
    Dernier message: 07/10/2005, 20h03
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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