Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

[C] Passer l'adresse d'une structure

kij_82, le jeudi 2 juin 2005 à 10:48:14 
 Signaler ce message aux modérateurs

Bonjours,

alors voilà, j'ai un client / serveur C.
Le client passe une requete SQL (sous format texte) au serveur apres connecion. Le serveur est chargé de lancer un module Perl qui effectue une connexion à une base de données et exécute la requete sur cette base, puis renvoie le résultat au prog C.
Le serveur doit alors, avant de déconnecter le client, lui donner le résultat de la requête.

Je me pose alors les question suivante :
Le résultat est un tableau de tableau de ... bref plein de ligne contenant des champs de tablea (résultat SQL quoi). Pour passer cela au client je me demandais si ce n'était plus simple de lui passer l'adresse de la structure qui a mémorisé le résultat (au niveau du Serveur C).
Donc, dans un premier temps, y a t-il qqun qui puisse me rapeller commment on passe l'adresse d'une structure.

D'autre part, uisqu'il s'agit d'un client / serveur, le client peut être un programme situé sur un autre pc... si je lui passe l'adresse de la structure située sur le pc du serveur, n'y aura 't'il pas de probleme ? Pour retrouver cette structure... ou y a-t-il un risque de réécriture de la part du serveur plus tard, et de ce fait, que le client ne retrouve plus la structure ?

Voilà, c'est peut être pas très clair... désolé.

merci
++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

1

tafiscobar, le jeudi 2 juin 2005 à 11:01:21

Salut, il n'y a pas de différence entre l'adresse d'un entier ou l'adresse d'une structure, cela reste un pointeur qui contient une adresse. Donc si ta structure c'est par exemple sql:
sql marequete;
&marequete; // te donne l'adresse de marequete
sql *unerequete; // un pointeur sur ta requete.

Maintenant, sur comment passer les messages entre client/serveur cela dépend de l'api et de ce q'il propose et donc je ne peux rien te dire dessus, cela fait un bon moment que je nen ai pas utilisé. En C je sais que l'on ecrit sur un filedescriptor et l'autre lit dessus, je ne sais plus ... tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!

Répondre à tafiscobar

2

TuXor, le jeudi 2 juin 2005 à 11:04:11

Salut kij,

je pense quetu a bien raison de te poser des question sur la validité de l'adresse que tu veux passer a ton client.

car si j'ai bien compris c'est le serveur qui exécute la requète et qui renvoi le résultat au client (normal pour un serveur).

mais comme ce sont deux machines différantes, l'adresse que le serveur renverrait au client, correspondrait a un espace mémoire dont on ne peut rien savoir (a part son contenu brut) et qui ne risque pas de contenir les données escomptées.

Sinon ce que je te conseille, c'est de revoyer le résultat sous forme de buffer, et de le copier ensuite dans une structure identique a celle de départ.

pour récuérer l'adresse d'une variable en c, on utilise

& <variable>.

mais si il s'agit d'un tableau de caractères, il suffit de passer le nom du tableau, qui est lui même un pointeur.
on peut aussi se compliquer la vieinutilement en renvoyant

& tab[0]

en espérant que cela puisse t'être utile @+

Répondre à TuXor

3

 kij_82, le jeudi 2 juin 2005 à 11:14:13

Merci à tous le deux,

cela confirme ce que je pensais masi ej ne voulais pas me lancer dans un truc bien merdique (La structure est la suivante :

typedef struct temp {
	char ****tableau;
	int nb_retours;
	int *nbligne;
	int *nbchamp;
};
)

Bon bah, je me met au boulot. C'est sutout pour le ****tableau que ca va faire mal... mais bon : je l'ai déjà fait du Perl au C,alors du serveur au client... :)


++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82
Les structures en langage C Différence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de... www.commentcamarche.net/contents/c/cstruct.php3
Langage C++ - Les pointeurs Comme en langage C, le langage C++ permet d'utiliser des pointeurs pour manipuler des données, mais il introduit aussi le concept de référence, très pratique pour permettre la modification d'une donnée passée en paramètre d'une fonction. Définition... www.commentcamarche.net/contents/cpp/cpppoint.php3
Algorithme langage c et structure des données (Résolu) Bonjour, je ne trouve pas ou je puisse appliquer tout se que j'ai sur algorithme et langage c ainsi les structure des donnés svp je veux des exercices ainsi c est corrigées et des travaux pratiques et des mini projets corrigées merci d'avance www.commentcamarche.net/forum/affich-7335991-algorithme-langage-c-et-structure-des-donnees
[MSN Messenger] Créer une adresse MSNPour créer une adresse MSN (@msn.com) ou faire une adresse hotmail (@hotmail.fr), il suffit de créer un compte .NET passport en procédant à l'inscription via l'adresse suivante... www.commentcamarche.net/faq/sujet-3785-msn-messenger-creer-une-adresse-msn
C liberer pointeur structurebonsoir, comment fais ton en C pour liberer un pointeur de structure free(P_STRUCT); genere une erreur du debbugeur "failure assertrion failed" merci de votre aide jeremie jerelium@free.fr www.commentcamarche.net/forum/affich-301429-c-liberer-pointeur-structure
Pointeur de structure dans fonction C (Résolu)Salut à tous, j'ai une fonction InsereDansListe rien de plus normal qui doit commme son nom l'indique inserer un pointeur vers un element dans une liste. Le probleme c'est que lorsque je passe un pointeur sur une liste vide ou même pleine et que... www.commentcamarche.net/forum/affich-2513913-pointeur-de-structure-dans-fonction-c
Pb de tableau de structure en CBonjour à tous, je suis en train d'apprendre le c et j'ai un pb. J'ai déclaré un structure: struct eleve { nom[20] prenom[20] absences[20] } absence un tableau contenant ma strucure : eleve ClasseEntiere[40]; Dans mon programme j'arrive à enregistrer... www.commentcamarche.net/forum/affich-52132-pb-de-tableau-de-structure-en-c
Les structures en langage C++Différence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de... www.commentcamarche.net/contents/cpp/cppstruct.php3
NAT - Translation d'adresses, port forwarding et port triggeringPrincipe du NAT Le mécanisme de translation d'adresses (en anglais Network Address Translation noté NAT) a été mis au point afin de répondre à la pénurie d'adresses IP avec le protocole IPv4 (le protocole IPv6 répondra à terme à ce problème). En... www.commentcamarche.net/contents/internet/nat.php3
Adresse IPQu'est-ce qu'une adresse IP Sur Internet, les ordinateurs communiquent entre eux grâce au protocole IP (Internet Protocol), qui utilise des adresses numériques, appelées adresses IP, composées de 4 nombres entiers (4 octets) entre 0 et 255 et... www.commentcamarche.net/contents/internet/ip.php3