begin process at 2012 05 28 21:29:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

envoi d'une structure dans un socket


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

envoi d'une structure dans un socket

mardi 2 septembre 2003 à 01:18:58 | envoi d'une structure dans un socket

Taum

Bonjour, voilà j'ai besoin d'envoyer une structure dans un paquet udp :

typedef struct {
unsigned short TransactionId;
short Flags;
short Questions;
short AnswerRRs;
short AuthorityRRs;
short AdditionalRRs;
char Separator;
char *Name;
short Type;
short Class;
} DNSQUERY;

donc je l'ai mis avec une union pour essayer de la 'transformer' en chars, puis d'envoyer les chars par le socket, mais il envoie un peu n'importe quoi. En affichant les chars, on s'aperçoit ke c'est en effet du nimporte quoi.

union {
char *Char;
DNSQUERY Struct;
} QueryPacket;

QueryPacket.Struct.TransactionId = 0x0080;
QueryPacket.Struct.Flags = 0x0001;
QueryPacket.Struct.Questions = 0x0001;
QueryPacket.Struct.AnswerRRs = 0x0000;
QueryPacket.Struct.AuthorityRRs = 0x0000;
QueryPacket.Struct.AdditionalRRs = 0x0000;
QueryPacket.Struct.Separator = 0x04;
strncpy(sName, "test.com", 63);
QueryPacket.Struct.Name = sName;
QueryPacket.Struct.Type = 0x0001;
QueryPacket.Struct.Class = 0x0001;

for (i = 0 ; i <= sizeof(QueryPacket.Struct)-1 ; i++) {
printf("%.2x", QueryPacket.Char[i], QueryPacket.Char[i]);
if ((i+1) % 8) { printf(" "); } else { printf("\n"); }
}

----------
ça affiche :
67 00 73 00 5c 00 41 00
6c 00 6c 00 20 00 55 00
73 00 65 00 72 00 73 00

j'ai du loupé quelque chose ;o
donc si kkun voit quoi ou a kkch d'autre a proposer ça serait cool
merci d'avance :)
mardi 2 septembre 2003 à 01:45:54 | Re : envoi d'une structure dans un socket

aardman

Membre Club
Salut,

SOCKET s; // a creer
sockaddr_in sin; // a remplir
DNSQUERY dns; // a remplir

sendto(s,(char*) &dns, sizeof(DNSQUERY), 0, (sockaddr*) &sin, sizeof(sin));


-------------------------------
Réponse au message :
-------------------------------

> Bonjour, voilà j'ai besoin d'envoyer une structure dans un paquet udp :
>
> typedef struct {
> unsigned short TransactionId;
> short Flags;
> short Questions;
> short AnswerRRs;
> short AuthorityRRs;
> short AdditionalRRs;
> char Separator;
> char *Name;
> short Type;
> short Class;
> } DNSQUERY;
>
> donc je l'ai mis avec une union pour essayer de la 'transformer' en chars, puis d'envoyer les chars par le socket, mais il envoie un peu n'importe quoi. En affichant les chars, on s'aperçoit ke c'est en effet du nimporte quoi.
>
> union {
> char *Char;
> DNSQUERY Struct;
> } QueryPacket;
>
> QueryPacket.Struct.TransactionId = 0x0080;
> QueryPacket.Struct.Flags = 0x0001;
> QueryPacket.Struct.Questions = 0x0001;
> QueryPacket.Struct.AnswerRRs = 0x0000;
> QueryPacket.Struct.AuthorityRRs = 0x0000;
> QueryPacket.Struct.AdditionalRRs = 0x0000;
> QueryPacket.Struct.Separator = 0x04;
> strncpy(sName, "test.com", 63);
> QueryPacket.Struct.Name = sName;
> QueryPacket.Struct.Type = 0x0001;
> QueryPacket.Struct.Class = 0x0001;
>
> for (i = 0 ; i <= sizeof(QueryPacket.Struct)-1 ; i++) {
> printf("%.2x", QueryPacket.Char[i], QueryPacket.Char[i]);
> if ((i+1) % 8) { printf(" "); } else { printf("\n"); }
> }
>
> ----------
> ça affiche :
> 67 00 73 00 5c 00 41 00
> 6c 00 6c 00 20 00 55 00
> 73 00 65 00 72 00 73 00
>
> j'ai du loupé quelque chose ;o
> donc si kkun voit quoi ou a kkch d'autre a proposer ça serait cool
> merci d'avance :)
mardi 2 septembre 2003 à 17:11:22 | Re : envoi d'une structure dans un socket

Taum

oki merci beaucoup ça marche :)
par contre j'ai du mettre des htons() pour le remplissage de la structure sinon ça posait des petits problèmes


-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> SOCKET s; // a creer
> sockaddr_in sin; // a remplir
> DNSQUERY dns; // a remplir
>
> sendto(s,(char*) &dns, sizeof(DNSQUERY), 0, (sockaddr*) &sin, sizeof(sin));
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour, voilà j'ai besoin d'envoyer une structure dans un paquet udp :
> >
> > typedef struct {
> > unsigned short TransactionId;
> > short Flags;
> > short Questions;
> > short AnswerRRs;
> > short AuthorityRRs;
> > short AdditionalRRs;
> > char Separator;
> > char *Name;
> > short Type;
> > short Class;
> > } DNSQUERY;
> >
> > donc je l'ai mis avec une union pour essayer de la 'transformer' en chars, puis d'envoyer les chars par le socket, mais il envoie un peu n'importe quoi. En affichant les chars, on s'aperçoit ke c'est en effet du nimporte quoi.
> >
> > union {
> > char *Char;
> > DNSQUERY Struct;
> > } QueryPacket;
> >
> > QueryPacket.Struct.TransactionId = 0x0080;
> > QueryPacket.Struct.Flags = 0x0001;
> > QueryPacket.Struct.Questions = 0x0001;
> > QueryPacket.Struct.AnswerRRs = 0x0000;
> > QueryPacket.Struct.AuthorityRRs = 0x0000;
> > QueryPacket.Struct.AdditionalRRs = 0x0000;
> > QueryPacket.Struct.Separator = 0x04;
> > strncpy(sName, "test.com", 63);
> > QueryPacket.Struct.Name = sName;
> > QueryPacket.Struct.Type = 0x0001;
> > QueryPacket.Struct.Class = 0x0001;
> >
> > for (i = 0 ; i <= sizeof(QueryPacket.Struct)-1 ; i++) {
> > printf("%.2x", QueryPacket.Char[i], QueryPacket.Char[i]);
> > if ((i+1) % 8) { printf(" "); } else { printf("\n"); }
> > }
> >
> > ----------
> > ça affiche :
> > 67 00 73 00 5c 00 41 00
> > 6c 00 6c 00 20 00 55 00
> > 73 00 65 00 72 00 73 00
> >
> > j'ai du loupé quelque chose ;o
> > donc si kkun voit quoi ou a kkch d'autre a proposer ça serait cool
> > merci d'avance :)
>
mardi 2 septembre 2003 à 17:29:17 | Re : envoi d'une structure dans un socket

aardman

Membre Club
Salut,
Y'en a pas besoin normalement, la chaine d'octet est envoyée telle qu'elle.
Tu as mis des ntohs() du coté de celui qui lit la structure ?


-------------------------------
Réponse au message :
-------------------------------

> oki merci beaucoup ça marche :)
> par contre j'ai du mettre des htons() pour le remplissage de la structure sinon ça posait des petits problèmes
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> >
> > SOCKET s; // a creer
> > sockaddr_in sin; // a remplir
> > DNSQUERY dns; // a remplir
> >
> > sendto(s,(char*) &dns, sizeof(DNSQUERY), 0, (sockaddr*) &sin, sizeof(sin));
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour, voilà j'ai besoin d'envoyer une structure dans un paquet udp :
> > >
> > > typedef struct {
> > > unsigned short TransactionId;
> > > short Flags;
> > > short Questions;
> > > short AnswerRRs;
> > > short AuthorityRRs;
> > > short AdditionalRRs;
> > > char Separator;
> > > char *Name;
> > > short Type;
> > > short Class;
> > > } DNSQUERY;
> > >
> > > donc je l'ai mis avec une union pour essayer de la 'transformer' en chars, puis d'envoyer les chars par le socket, mais il envoie un peu n'importe quoi. En affichant les chars, on s'aperçoit ke c'est en effet du nimporte quoi.
> > >
> > > union {
> > > char *Char;
> > > DNSQUERY Struct;
> > > } QueryPacket;
> > >
> > > QueryPacket.Struct.TransactionId = 0x0080;
> > > QueryPacket.Struct.Flags = 0x0001;
> > > QueryPacket.Struct.Questions = 0x0001;
> > > QueryPacket.Struct.AnswerRRs = 0x0000;
> > > QueryPacket.Struct.AuthorityRRs = 0x0000;
> > > QueryPacket.Struct.AdditionalRRs = 0x0000;
> > > QueryPacket.Struct.Separator = 0x04;
> > > strncpy(sName, "test.com", 63);
> > > QueryPacket.Struct.Name = sName;
> > > QueryPacket.Struct.Type = 0x0001;
> > > QueryPacket.Struct.Class = 0x0001;
> > >
> > > for (i = 0 ; i <= sizeof(QueryPacket.Struct)-1 ; i++) {
> > > printf("%.2x", QueryPacket.Char[i], QueryPacket.Char[i]);
> > > if ((i+1) % 8) { printf(" "); } else { printf("\n"); }
> > > }
> > >
> > > ----------
> > > ça affiche :
> > > 67 00 73 00 5c 00 41 00
> > > 6c 00 6c 00 20 00 55 00
> > > 73 00 65 00 72 00 73 00
> > >
> > > j'ai du loupé quelque chose ;o
> > > donc si kkun voit quoi ou a kkch d'autre a proposer ça serait cool
> > > merci d'avance :)
> >
>
mercredi 7 avril 2004 à 17:10:17 | Re : envoi d'une structure dans un socket

topl

Salut,

j'ai essayer ce sytéme mais chez moi ca marche po :-(

Je sniffe avec ethereal pour voir comment ca se passe.

Bilan les niveaux IP et UDP sont nikel, mon probleme vien de la couche DNS , il semblerai que la string passer dans la structure poster par Taum n'ai pas reconnut . Elle se retrouve dans le paquet comme un seul hexa. Donc je me retrouve avec une methode Unknown.

Y'a t-il une solution?


Cette discussion est classée dans : char, short, struct, querypacket, 0x0001


Répondre à ce message

Sujets en rapport avec ce message

envoi de paquet ip [ par sendouda ] Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso urgent:envoi paquet [ par sendouda ] Bonjour;j'ai écrit un programme qui permet d'envoyer des paquets ip à une destination.mais quand j'ai voulu le sniffer j'ai pas pu le capter.J'ai beso problème de déclaration int [ par mayapour ] Bonjour, Dans un programme en C, je souhaite afficher les infos d'un dossier : void printfile (char * name, options_t * options) {   struct stat s; intervalle de valeur pour 4 types de variables. [ par tifendro ] Bonjour je voudrais retrouver de moi_même les intervalles que prennent des valeurs ::j'ai deja :char DEPART_CHAR=1, MIN_CHAR; MIN_CHAR = DEPART_CHAR   problème de pointeur [ par Kurpeus1 ] Bonjour. J'ai déjà posé la question il y a deux trois jours mais je n'ai pas eu de réponse satisfaisante. Je me permet de réxpliquer mon problèmej'ai Problème de char et dans une struct [ par yggy ] dans ce code : il me dit une erreur après le char dbmdp[7][5] je vois pas mon erreur!ai-je fait quelque chose de faux?struct ServerTest1{   char dbmdp structures imbriquées [ par draluorg ] Salut a tous,Je recontre un probleme en creant des structures imbriquées :(Voici un exemple type de mes structures:typedef struct _SUB_SUB_SUB_STRUCTU convertion short* to char* et inversement [ par popinou77 ] au secours help meje cherche a convertir un short* en char *  en C++ pour le transmetre sur un reseau UDPbien entendu j ai essaye de faire un transtip structure [ par logant83 ] bonjoir, enfaite voila j'aimerai pouvoir exploiter une structure mais voila j'i arrive pas. struct connect_nick { //ma structure char pseudo[1000 Struct dynamique est ce possible ? [ par Booster ] Bonjour à tous,Voici ce que je veu faire :struct test{    int var1;    char * tab;}//Dans mon codetest mastruct;mastruct.tab = new char * [100]; // Sa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 0,702 sec (3)

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