begin process at 2012 05 28 08:52:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Réseau & Internet

 > 

Client UDP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Client UDP

mercredi 2 juin 2010 à 16:58:45 | Client UDP

doufdouf51

J'ai un probleme avec la fonction recvfrom()
J'ai une application une en C# et dll en C++ qui communique en UDP.
Les deux programme peuvent envoyer des requêtes a l'autre.
Du coté serveur en C++ l'application fonctionne corectement donc coté client C# pas de souci.
Pas contre lorsque que j'envoie une requête a partie de la dll elle s'envoi correctement je la recois bien dans mon application C#, celle ci renvoi un accuser et mon application bug sur la fonction recvfrom().Je vous met mon code:


int n;
char buffer[1007];
struct hostent *hostinfo = NULL;
SOCKADDR_IN Info_destination = { 0 };
const char *hostname = "127.0.0.1"; //IP du serveur
int tosize = sizeof Info_destination;

hostinfo = gethostbyname(hostname);
if (hostinfo == NULL)
{
Debug.Log(1,"Probléme hostinfo");
exit(EXIT_FAILURE);
}

Info_destination.sin_addr = *(IN_ADDR *) hostinfo->h_addr; //IN_ADDR->Ecoute sur toutes les IP locales
Info_destination.sin_port = htons(8444);
Info_destination.sin_family = AF_INET;

MESSAGE_IHMPIPE_CMD message_DllIHM;

message_DllIHM.action = DLLIHM_ACT_D_NEWCONNECT;
message_DllIHM.ID_IHM = 0xA4;
message_DllIHM.STXIHM = 0xBE;
message_DllIHM.Arg[0] = DLLIHM_ACT_D_NEWCONNECT;
message_DllIHM.Arg[1] = ';';
message_DllIHM.Arg[2] = 0x09;
message_DllIHM.NbOctetArg =3;
message_DllIHM.BCC = BCC_Pipe((unsigned char*)&message_DllIHM,4+1+message_DllIHM.NbOctetArg);

Debug.Log(0,"Debut Envoi Trame");
if(sendto(sock_client,(const char*) &message_DllIHM, sizeof(message_DllIHM), 0, (SOCKADDR *)&Info_destination, tosize) < 0)

{
Debug.Log(1,"Erreur sendto");
}
Debug.Log(0,"Debut Attente Trame");
bool flag = true;
while(flag)
{
Debug.Log(0,"While");//Permet de tester
n = recvfrom(sock_client, buffer, sizeof buffer - 1, 0, (SOCKADDR *)&Info_destination, &tosize);

Debug.Log(0,"n %d",n);
Debug.Log(2,"recvfrom = %d",WSAGetLastError());

if (n == SOCKET_ERROR)
{
Debug.Log(2,"Get_Trame: SOCKET_ERROR");
flag = false;
//return false;
}

if (n == 0)flag = true;

if (n>0)
{
flag = false;
buffer[n] = '\0';
Debug.Log(0,"*************Debut Trame reponse IHM***************");
Debug.Log(0,"buffer[0] = %d",buffer[0]);
Debug.Log(0,"buffer[1] = %d",buffer[1]);
Debug.Log(0,"buffer[2] = %d",buffer[2]);
Debug.Log(0,"buffer[3] = %d",buffer[3]);
Debug.Log(0,"buffer[4] = %d",buffer[4]);
Debug.Log(0,"buffer[5] = %d",buffer[5]);
Debug.Log(0,"buffer[6] = %d",buffer[6]);
Debug.Log(0,"buffer[7] = %d",buffer[7]);
Debug.Log(0,"buffer[8] = %d",buffer[8]);
Debug.Log(0,"buffer[9] = %d",buffer[9]);
Debug.Log(0,"*************Fin Trame reponse IHM***************");
}
}

une fois que mon code arrive a la fonction recvfrom elle ne passe pas a l'instruction suivante.(dans mon fichier DEBUG je trouve le premier While puis plus rien. Je suis sur que cela ne vient pas de mon fichier DEBUG car quand je quitte la dll je retrouve bien a la suite les commande de fermeture.

Je ne vois pas du tout d'où cela peut venir :(
Si quelle qu'un a une idée je suis ouvert.
Si vous avez besoin de plus d'informations dit le moi !
lundi 7 juin 2010 à 10:06:45 | Re : Client UDP

katerson

Réponse acceptée !
Salut!

"Pas contre lorsque que j'envoie une requête a partie de la dll elle s'envoi correctement je la recois bien dans mon application C#, celle ci renvoi un accuser et mon application bug sur la fonction recvfrom()"

Je ne crois pas avoir tout saisi mais la fonction recvfrom() est une fonction bloquante >> tant que le message n'est pas reçu tu ne sortiras pas de cette fonction...

As-tu fait du pas à pas pour voir ce qui se passe? Ta socket est peut être mal initialisé d'un des 2 côtés et tu ne reçois rien.

Mode Debug et affiche le contenu des buffers..

lundi 7 juin 2010 à 11:24:51 | Re : Client UDP

doufdouf51

je ne peut pas utiliser le mode Debug(Je crois...) car le problème vient de la fonction recvfrom() de ma dll!! c'est pour cette raison que j'utilise un fichier texte qui me sert de Debug (je vais revérifier les initialisation des sockets)je te tien au courant


Cette discussion est classée dans : buffer, message, log, debug, dllihm


Répondre à ce message

Sujets en rapport avec ce message

debug assertion fail???? [ par dambeaufort ] bonjour,je voudrais savoir comment trouver l'erreur lorsque vous avez un message "debug assertion fail".Pour ma part j'ai le message suivant:"Debug as requette [ par baby3378 ] bonjous, voila, j'ai trouvé un code sur ce site qui permet de faire une requette html (port 80) sur un server, sauf que je voudrai savoir comment fair Lire le log du debug [ par Slown ] Bonjour, dans le cadre de mon projet de stage je dois recuperer les informations du log du debuger windows afin de les traiter. Auriez vous une soluti xmlDocPtr plante mon appli [ par VBREP ] utilisation de xmlDocPtr fait plante mon appli je verifi l'existance d'un fichier dans un dossier, ce fichier porte le meme nom que le dossier avec u Threads, fonction et mutex ? [ par Adict ] bonjour à tout le monde [^^happy13] dans mon projet de créer un tchat il faut que j'applique sur le client un thread qui exécute une autre fonction q buffer [ par coins ] Bonjour a tous, J'ai utilise le fonction recv () pour recupere de message de socket, mais, le probleme est , si la taille de message superieur que la Probléme d'écriture dans un fichier [ par _testtesttest_ ] Bonjour,je débute en c/cpp et je suis confronté à un probléme.Je suis en train de codé un programme qui récupére des données sur un socket donc grace thread ne répondant pas sous MFC [ par seito ] bonjours,je suis en train de concevoir une application qui me permet d'éffectuer un chat en réseau sous "Visual C++ 6.0" le problême c'est que quand j envoi fichier via socket [ par elanspeech ] Bonjour,J'ai fait un client/serveur, la communication se passe bien. cependant, je ne parviens pas a envoyer plusieurs fichiers a la suite avec la soc Impossible d'envoyer un mail avec Mapi + Outlook ? [ par GDon_Fr ] Bonjour à tous,Je dois développer une application qui saura envoyer un mail via n'importe quel client mail compatible avec "Simple Mapi". En regardant


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales