Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
585 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [SOCKETS UNIX] Ecriture/Lecture

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SOCKETS UNIX] Ecriture/Lecture

n°1000617
barbaputas
Wtf ?!
Posté le 04-03-2005 à 13:37:28  profilanswer
 

Salut à tous.
J'ai lu quelques tutos avant de m'attaquer aux sockets unix.
J'arrive disons à faire circuler du texte entre 1 serveur et 1 client.
Mais ce que je n'arrive pas, ca serait de faire circuler un autre type de données. Par exemple un tableau d'int, comment l'envoyer du serveur(ou client) vers le client (ou serveur).
Si quelq'un a une breve idee je suis preneur.
Merci

mood
Publicité
Posté le 04-03-2005 à 13:37:28  profilanswer
 

n°1000942
mordicator
Posté le 04-03-2005 à 16:41:25  profilanswer
 

Le fait que tu utilises des sockets ne change rien au probleme en fait, tu utilises les memes fonctions standard read/write j'imagine (si tu utilise une connexion TCP)
 
Or avec ces fonctions, tu peux ecrire et lire ce que tu veux, pourvu que:
1) tu connaisses la taille de ce que tu ecris.
2) tu connaisses la taille et le type de ce que tu lis.
 
Bref, si tu ecris un tableau de 10 entiers avec write, il faut que de l'autre cote tu trouves le moyen d'identifier le type en question (un tableau de int en l'occurence) et sa taille. Or, autant pour le texte, c'est facile a faire, pour du binaire (tout ce qui n'est pas du texte en gros) il faut que tu t'imposes ton mini protocole.
 
Une solution simple est de d'utiliser une structure d'entete, quelque chose qui te donne justement les infos voules:
struct s_header
{
  int size;
  int type;
  // eventuellement les donnees apres
};
 
avant chaque write, tu remplis les infos qui vont bien dans ta structure, t'y ajoute les donnees et hop, tu envois!
 
Ensuite pour la lecture, etant donne que tu sais que tu dois lire une structure de type s_header, tu le fais.
Avec ca tu reccupere la taille et le type des donnees qui suivent, il te suffit juste de relire les donnees.
 
Evidement, ca demande d'ajouter (au besoin) certains controles sur les tailles, de bien definir les types echanges etc...
 
Attention, lorsque que tu lis ou ecris une structure, ne fais pas l'erreur de mettre des pointeurs dedans auquel cas tu lirais ou ecrirais la valeur du pointeur (l'addresse donc) et non les données pointes! (un pointeur c'est en general 32bits donc 4 caracteres)
 
Voila, j'espere que ca te mettra sur la piste, j'ai assume que tu utilisais le C.

n°1001070
Profil sup​primé
Posté le 04-03-2005 à 17:36:14  answer
 

en fait, avec un pointeur ca va clairement segfaulter :/
le serveur envoi un pointeur qui pointe vers une adresse ds la ram du serveur  
et le client recoit le pointeur et essai d'acceder a la meme adresse mais sur sa ram a lui et la suprise  :whistle:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [SOCKETS UNIX] Ecriture/Lecture

 

Sujets relatifs
Select pour Socketsoption d'un terminal (programmation C sous Unix)
Vérouillage lecture fichierécriture dans excel
Problème d'affichage en PERL sous UNIX[C++] Erreur lors de lecture/écriture d'un certain nb de fichiers
Question sur lecture de fichier !!chemin de fichier pour une lecture.
[C/C++] Lecture de structures en C++ ? Nouvelles questions > 
Plus de sujets relatifs à : [SOCKETS UNIX] Ecriture/Lecture


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR