Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : demande d'aide sur socket [ Windows / Réseau & Internet ] (lucillemargau)

jeudi 21 août 2008 à 16:28:56 | demande d'aide sur socket

lucillemargau

bonjour
 dans une partie de mon porjet je suis ramené à echanger des trames contenant ( taille,type,et contenue)
le problème ce que je ne sais pas comment je vais construire ma trame à l'envoi ni comment séparer chaque blocà la recéption, merci pour vôtre aide et vos liens utils


jeudi 21 août 2008 à 17:31:25 | Re : demande d'aide sur socket

fregolo52

Membre Club
Ca parait simple, donc je me dits que j'ai mal compris le pb.

tu crées un bloc mémoire contenant toutes tes données puis tu les balances avec send ou sento.

vendredi 22 août 2008 à 12:28:56 | Re : demande d'aide sur socket

lucillemargau

comment je vaus faire donc à la récéption??

vendredi 22 août 2008 à 14:49:47 | Re : demande d'aide sur socket

SebLinck

Salut,

Pour la réception tu lis les octets et tu cast dans le type que tu doit trouver.
Ou bien tu crées une structure contenant toutes les info de la réponse et
tu passes l'adresse de la structure au lieu de passer un buffer...

Moi je préfère passer une structure de buffer et faire un transtypage après
de chaque buffer (exemple pour réception udp de 3 octets):
dans le premier aotet le code d'erreur dans les deux suivant un entier sur deux octets:

  struct DEM{
    char rep;
    char alt[2];
    };
   DEM reponse;
   
   if ((Ret = recvfrom(ReceivingSocket, (char*)&reponse, sizeof(reponse), 0,
       (SOCKADDR *)&SenderAddr, &SenderAddrSize)) == SOCKET_ERROR)
   {
      printf("ERROR: recvfrom failed with error %d\n", WSAGetLastError());
      closesocket(ReceivingSocket);
      WSACleanup();
      return 0;
   }

int octet1_bin1 = (reponse.alt[0] & 0x1)  >> 0;
int octet1_bin2 = (reponse.alt[0] & 0x2)  >> 1;
int octet1_bin3 = (reponse.alt[0] & 0x4)  >> 2;
int octet1_bin4 = (reponse.alt[0] & 0x8)  >> 3;
int octet1_bin5 = (reponse.alt[0] & 0x16) >> 4;
int octet1_bin6 = (reponse.alt[0] & 0x32) >> 5;
int octet1_bin7 = (reponse.alt[0] & 0x64) >> 6;
int octet1_bin8 = (reponse.alt[0] & 0x128)>> 7;

int octet2_bin1 = (reponse.alt[1] & 0x1)  >> 0;
int octet2_bin2 = (reponse.alt[1] & 0x2)  >> 1;
int octet2_bin3 = (reponse.alt[1] & 0x4)  >> 2;
int octet2_bin4 = (reponse.alt[1] & 0x8)  >> 3;
int octet2_bin5 = (reponse.alt[1] & 0x16) >> 4;
int octet2_bin6 = (reponse.alt[1] & 0x32) >> 5;
int octet2_bin7 = (reponse.alt[1] & 0x64) >> 6;
int octet2_bin8 = (reponse.alt[1] & 0x128)>> 8;

int Altitude;
Altitude = octet1_bin8  * 32768;
Altitude += octet1_bin7 * 16384;
Altitude += octet1_bin6 * 8192;
Altitude += octet1_bin5 * 4096;
Altitude += octet1_bin4 * 2048;
Altitude += octet1_bin3 * 1024;
Altitude += octet1_bin2 * 512;
Altitude += octet1_bin1 * 256;

Altitude += octet2_bin8 * 128;
Altitude += octet2_bin7 * 64;
Altitude += octet2_bin6 * 32;
Altitude += octet2_bin5 * 16;
Altitude += octet2_bin4 * 8;
Altitude += octet2_bin3 * 4;
Altitude += octet2_bin2 * 2;
Altitude += octet2_bin1 * 1;
closesocket(ReceivingSocket);
return Altitude;

Cordialement,
Sébastien.

vendredi 22 août 2008 à 18:00:46 | Re : demande d'aide sur socket

aardman

Membre Club
tu as une maniere bien compliquée de faire int Altitude = reponse.alt[0] << 8 | reponse.alt[1];

dimanche 24 août 2008 à 11:54:50 | Re : demande d'aide sur socket

SebLinck

Salut,

Effectivement, ma manière n'est pas des plus simples, mais elle a le mérite d'être explicite.
Ta méthode  est "La" méthode, chapeau l'artiste ! j'avais oublier le décalage à gauche,
faut dire que je n'en avais pas vu depuis quelques années...

Cordialement,
Sébastien.

mardi 26 août 2008 à 13:33:22 | Re : demande d'aide sur socket

lucillemargau

merci  sebastien mais je n'arrive pas à comprendre ta méthode aardman veut tu  m'expliquer ta methode?? merci

samedi 13 septembre 2008 à 22:01:53 | Re : demande d'aide sur socket

Kian_ix

attention avec un recv d'une taille demandée la taille recue réellement peut etre plus petite

dimanche 14 septembre 2008 à 16:00:06 | Re : demande d'aide sur socket

SebLinck

Aarman fait un décalage a gauche de l'octet de poids fort et fait un ou logique avec l'octet de poids faible, il se retrouve avec l'entier codé sur deux octet.

Moi je décale tous les bit à droite pour faire un ET et savoir si il est à 0 ouo a 1...
ensuite je le multiplie par la valeur de chacun ( convertion base 2 base 10)

Cordialement,
Sébastien.



Cette discussion est classé dans : aide, demande, socket


Répondre à ce message

Sujets en rapport avec ce message

DEMANDE AIDE: aide sur socket, server proxy et spoof [ par retaks666 ] je voudrai savoir si en etudaint les sockets, je pourrai creer un serveur proxy ki renvoie une fausse ip, par exemple cela pourrai servir de spoofer s demande d'aide [ par naddou1985 ] Bonjour J'essaie de transférer des fichiers (de tout type : texte, exécutable,... et de toute taille : de qq centaines d'octets à 2 ou 3 Go) avec un e demande d'aide sur c [ par belle_wiwi ] bonjour,  j'ai besoin de votre aide si c'est possible, j'ai un programme en c à faire et qui doit valider certains critérs parmis lesquels:vérifier si demande d'aide(java3d) [ par Tunis_khalifa ] je veux determiner la methode (le code) pour determiner les coordonnes d un cube 3d qui est en mouvement(animation) lors de l'appui sur une touche Aid demande d'aide pouer crt2.o [ par magicienblanc ] salu tt le monde je sui un debutan en C,jai installer dev-c++ et kan jecri un program simple il maffiche cette erreur:C:\Dev-Cpp\ld cannot open crt2.o demande aide [ par ugmeg_44 ] je travaille sur un projet en c++ et je demande si vous pouver m'aidez sur ce sujet .merci d'avance Créer une application en C++, avec les librairies demande d'aide [ par atlas380 ] je devellope une application en C++,je souhaite savoir si quelqu'un pe me dire comment faire pour copier le contenu d'un repertoire a un autre merci demande d'aide [ par gwenn56 ] Bonjour, je ne suis pas du tout informaticien, j'utilise mon PC au domicile (principalement internet) et depuis qques jours j'ai le message suivant à demande d'aide [ par ahmedabdi ] bonne jour mes amies je vs demande l'aide à mon pb qui est comment programmer un objet matrice en java et comment presenter un graphe en utilisant cet


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,811 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.