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 :

problème de réception de données sur pocket PC


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Points : 34
    Points
    34
    Par défaut problème de réception de données sur pocket PC
    bonjour,

    j'ai deux appli:une sur pc et l'autre pocket pc.
    je communique entre les deux par WiFi.
    j'arrive a envoyer un message de mon appli pocket pc vers le pc mais pas le contraire.
    j'ai l'impression que mon appli de pocket pc n'appelle jamais les méthodes de notification OnAccept(),OnConnect() et OnReceive().
    C'est pourquoi ca ne marche pas.
    Mais je vois pas comment faire pour qu'elles soient appelées.
    voici mon code lors du démarrage du serveur coté pocket pc:
    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
     
    void CAppliTestDlg::OnRunServeur() 
    {
    	//Creation Socket d'ecoute niveau serveur
    	if( oMonSocketEcoute.Create(4000) == FALSE)
    	{	
    		CString sTxt;
    		sTxt.Format(_T("Erreur de Create: %d,\r\n"), GetLastError());
            CString sTxt1;
    		GetDlgItemText(IDC_EDIT_INFO_RECUE, sTxt);
    		sTxt1 += sTxt;
    		SetDlgItemText(IDC_EDIT_INFO_RECUE, sTxt1 + "\r\n");
    		oMonSocketEcoute.Close();
            return ; 
    	}
     
    	if( oMonSocketEcoute.Listen() == FALSE)
    	{
    		CString sTxt;
    		sTxt.Format(_T("Erreur de Listen: %d,\r\n"), GetLastError());
            CString sTxt1;
    		GetDlgItemText(IDC_EDIT_INFO_RECUE, sTxt);
    		sTxt1 += sTxt;
    		SetDlgItemText(IDC_EDIT_INFO_RECUE, sTxt1 + "\r\n");
            oMonSocketEcoute.Close();
            return ; 
    	}
     
    }
    le code de demande de connexion au serveur coté pc:
    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
     
    void CClient_ServeurDlg::OnConnectSrv() 
    {
    	// TODO: Add your control notification handler code here
    	if( oMonSocketClient.Create() == FALSE)
    	{	
    		CString sTxt1;
            GetDlgItemText(IDC_MSG_ENV, sTxt1);
    		CString sTxt2;
    		sTxt2.Format("Erreur de Create: %d,\r\n", GetLastError());        
    		SetDlgItemText(IDC_MSG_ENV, sTxt1 + sTxt2 + "\r\n");
     
    		oMonSocketClient.Close();
            return ; 
    	}
     
    	GetDlgItem(IDC_IP_SRV)->EnableWindow(FALSE);
    	GetDlgItem(IDC_PORT)->EnableWindow(FALSE);
    	GetDlgItem(IDC_ENVOI_MSG)->EnableWindow(TRUE);
    	GetDlgItem(IDC_MSG)->EnableWindow(TRUE);
     
     
    	int iPort = GetDlgItemInt(IDC_PORT);
    	CString sIP;
    	GetDlgItemText(IDC_IP_SRV,sIP);
    	int j;
    	char cIP[15] = "";
    	for (j=0;j<sIP.GetLength();j++)
    	{
    		cIP[j] = sIP.GetAt(j);
    	}
     
     
    	if( oMonSocketClient.Connect(cIP, iPort) == FALSE)
    	{	
    		CString sTxt;
    		sTxt.Format("Erreur de Connect: %d,\r\n", GetLastError());           		
    		CString sTxt1;
            GetDlgItemText(IDC_MSG_ENV, sTxt1);
    		SetDlgItemText(IDC_MSG_ENV, sTxt1 + sTxt + "\r\n");
     
    		return ; 
    	}
     
    }
    mon code lors de l'appui sur le bouton "envoi message" coté pc vers pocket pc:
    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
     
    void CClient_ServeurDlg::OnEnvoiMsg() 
    {
    	char*	msg			= NULL;
    	int		msgLength	= 0;
    	CString sTxt		= "";
     
    	GetDlgItemText(IDC_MSG,sTxt);
    	if(sTxt.IsEmpty() == TRUE)
    	{
    		return;
    	}
     
    	msg			= sTxt.GetBuffer(0);
    	msgLength	= sTxt.GetLength();	
     
    	ASSERT( msg	!= NULL);
    	ASSERT( msgLength >0);
     
    	int i = oMonSocketClient.Send( msg, msgLength);
     
    	CString sTxt2;
    	sTxt2.Format(" Nb de car env: %d,\r\n", i);           		
    	CString sTxt1;
        GetDlgItemText(IDC_MSG_ENV, sTxt1);
    	SetDlgItemText(IDC_MSG_ENV, sTxt1 + sTxt2 + "\r\n");		
    }
    et enfin mon code lors de la réception coté pocket pc:
    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
     
    void CMonAsyncSocketClientConnecte::OnReceive(int nErrorCode) 
    {
    	CString sTxt2;
    	if( nErrorCode != 0) // Code d'erreur retourné par OnReceive
    	{		
    		sTxt2.Format(_T("Erreur de OnReceive: %d,\r\n"), GetLastError());           
    	}
    	else // OnReceive OK
    	{
    		sTxt2 = "OnReceive OK";
    	}
     
    	CAsyncSocket::OnReceive(nErrorCode);
     
    	//char MsgRecu[2096]; // définition du buffer
    	LPTSTR	MsgRecu = (LPTSTR) (char*) malloc(2096);
    	int iTaille = Receive(MsgRecu, 2096);  // Réception qui retourne le nombre de d'octets reçus		
    	MsgRecu[iTaille] = '\0';
     
    	CString sTxt;
    	sTxt.Format(_T("%s"), MsgRecu);
     
    	m_pParent->GetDlgItemText(IDC_EDIT_INFO_RECUE, sTxt2);
    	sTxt2 += sTxt;
    	m_pParent->SetDlgItemText(IDC_EDIT_INFO_RECUE, sTxt2 + "\r\n");
    }
    Et je dois avouer que je comprends pas car avec le même principe ma communication client serveur fonctionne de pc a pc.
    Alors aidez moi siouplé les gens

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    est ce quelqu'un gère assez les sockets pour entrevoir une faille dans mon code?
    Merci d'avance

  3. #3
    kor
    kor est déconnecté
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    Je ne peux pas répondre à ta question mais j'aimerais savoir sur quoi tu développe (Arm, PXA255...).
    Je chercher un environnement pour développer sur PXA255, il y a "Embbed studio" de microsoft mais qui apparament ne support pas (au debug) le PXA255. Dis-moi si je me trompe?
    Sinon tu n'a pas une idée?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    aucune idée précise.
    moi je développe sur ARM avec evc++4.0 mais je sais pas ce qu'il te faut.

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    en reception qu'elle est la taille recue ?
    petite remarque utilises new plutot que malloc et il manque le free sur le buffer de reception
    apres j'ai un doute sur le Getbuffer(0) et de toute façon il faut pas oublier aussi ReleaseBuffer().
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oMonSocketClient.Send( (const char *)sTxt, msgLength);

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    non mais le problème majeur ne vient pas de là.
    je n'en suis pas encore a savoir si la réception marche.
    en fait je n'ai meme pas de notification OnAccept coté pocket pc donc je n'accepte aucune socket.
    je ne sais pas pourquoi mais aucune notification est appelé.
    ce qui fait que le accept ne fonctionne pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2007, 14h44
  2. Problème de liaison de donnée sur un datasource
    Par dubidon dans le forum VB.NET
    Réponses: 1
    Dernier message: 01/06/2007, 16h05
  3. Réception des données sur un autre serveur
    Par u115rcu dans le forum Langage
    Réponses: 5
    Dernier message: 20/01/2007, 14h20
  4. [VB6]Réception de données sur port série
    Par lindecker dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/03/2006, 06h48
  5. problème d'accès aux données sur serveur par poste client
    Par rahan_dave dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/02/2006, 09h13

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