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 : Envoi structure dans une Socket [ Linux / Autre ] (meastalavista)

samedi 8 décembre 2007 à 19:23:39 | Envoi structure dans une Socket

meastalavista

Bonjour

je programme un client-serveur qui gére des réservations.
Au début je voulais me contenter d'envoyer des simples message,mais ca s'est avéré trop lourd.

on suppose que j'ai une structure de type:

structure reserv
{char num [5];
  char nom [10];
  char description [20];
};

Le probléme, c'est que je ne vois pas comment envoyer des structures par socket et comment les récupérer du coté serveur.

Si quelqu'un peut m'aider à avancer,ca serait sympa.
Au plaisir de vous lire


samedi 8 décembre 2007 à 19:56:50 | Re : Envoi structure dans une Socket

SAKingdom

Membre Club
Réponse acceptée !
Ben

struct struct_test {
    int toto;
};

int main () {
    struct struct_test test = {5};
    ...
    send(..., (char*)&test, sizeof(struct struct_test), ...);
    ...
}

Non ?

C++ (@++)


dimanche 9 décembre 2007 à 15:53:56 | Re : Envoi structure dans une Socket

lektrosonic

Réponse acceptée !
salut,
tu definit un caractere en tant que separateur (exemple "~"), ou meme char seperator = 1  (caractere de code ascii 1 donc vraiment le caractere qui s utilise rarement)
dans ton buffer d envoi:
strcpy(buffer,reserv.num);
strcat(buffer,"~"));
strcat(buffer,reserv.nom);
strcat(buffer,"~"));
strcat(buffer,reserv.descritpion);
strcat(buffer,"~"));

a l'arrivee des donnees:
tu auras un truc qui ressemble a sa dans le buffer de reception:
"45~setphane~test~"

char* part[3];
int len=strlen(buffer_reception);
part[0]=&buffer_repection[0];
int j=0;
for(i=0;i<=len;i++)
{
    if(buffer_repection[i]=='~'
    {
        if(j==3)
        { 
             buffer_reception[i]=0;
             break;
       }
       else
       {
                j++;
              part[j]=&buffer_repection[i+1];
             buffer_reception[i]=0;
       }
    }
}

au final tu auras part[0]=="45" part[1]=="stephane" et part[2]=="test"

l3KTr0 Was HeRe

dimanche 9 décembre 2007 à 15:59:52 | Re : Envoi structure dans une Socket

lektrosonic

Réponse acceptée !
correction

if(j==2) au lien de if(j==3)

l3KTr0 Was HeRe

dimanche 9 décembre 2007 à 16:59:13 | Re : Envoi structure dans une Socket

SAKingdom

Membre Club
Réponse acceptée !
Il envoit une structure contenant des tableaux de taille bien définie.
Si il utilise le même principe à la réception qu'à l'envois, c'est à dire:

recv(..., (char*)&test, sizeof(struct struct_test), ...);

Il devrait être capable de récupérer toute ses chaines correctement.

C++ (@++)


dimanche 9 décembre 2007 à 18:17:18 | Re : Envoi structure dans une Socket

meastalavista

Bonjour,

Merci bcp pour vos reponses,ca m'a été de grande utilité.

tout marche nikel maintenant :d


Hasta La Vista Baby
L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai...



Cette discussion est classé dans : serveur, envoi, socket, char, structure


Répondre à ce message

Sujets en rapport avec ce message

sockets: envoi d'une structure... [ par julien20vt ] Maintenant que j'ai réussi à envoyer des char, des int[], je voudrais envoyer un structure faite maison.Le pb est que le socket n'accepte que les char Thread et socket besoin de conseil [ par kawito ] Salut,je desire realiser un client/serveur TCPle probleme est que les fonctions accept et recv sont bloquante.donc cela bloque l'affichage etc...mon p Comment Gerer des sockets non bloquant sous OpenGl [ par kawito ] Bonjour,je devellope un jeu (2d + scene 3d) en Opengl et C++, je desire utiliser seulement opengl et c++ (console app), pour des raisons de portabilit prob socket [ par flatou ] salutj'ai créé une appli serveur, banale : un client se connecte, il envoi un message et le serveur affiche le message.j'ai utilisé cela pour la recep programmation socket sous linux [ par blazman34 ] Bonjour à tous !!Voici mon probleme :Je suis en train de programmer une application client serveur sous linux, tout a bien marcher juska présent juska Envoi de fichier d'un client vers un serveur [ par kanagan ] Salut à tous.Voilà, je dois réaliser un programme (enfin 2: un client et un serveur) en C++ sous Viual C++ 6.Le but: Le client (sur un pc) doit envoye Structure dans une classe [ par briscard ] Hello world!!A ton le droit de passer une structure du type: struct { char *Gamma = new char[3]; char *Phase = new char[3]; }donnee;dans u Connexion/Deconnexion/Reconnexion Socket [ par tequila1 ] BonjourJ'ai développé une DLL, qui se connecte à un serveur de données via socket.J'utilise pour cela les MFC. Je me connecte au serveur, je recois le socket [ par flatou ] salutvoila le code du serveur sous dos que j'ai fait :#include #include #include #pragma comment(lib, "ws2_32.lib")SOCKET s;SOCKET c;SOCKET result;soc problème socket sous windows [ par kod32 ] Voici mon code : (winsock2.h)-----------------------------int main(){ /* inialisation */ WSADATA wsa; WSAStartup(MAKEWORD(2,0), &wsa); /*


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,265 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é.