C++¨/ Problème pour recevoir des octets dans un tableau [Résolu]

Signaler
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
29 juillet 2010
-
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
29 juillet 2010
-
Bonjour a tous.

Je suis une grande débutante en c++ et je me heurte a un problème.

Voila, je dois faire un programme de socket.
J'utilise pour cela une source et header que j'ai nommé socket et que je rattache au main.
Le problème est que dans ma source socket.cpp j'ai le bout de code pour pouvoir recevoir des octets que je met dans un tableau.
Déjà je ne suis pas du tout sure que ce que j'ai mit fonctionne: le code:
std::string Socket::ReceiveLineServer()
{
string ret;
int VALEUR=2048;
const char* buffer[VALEUR];

char r;
for (int i=0; i<VALEUR;i++)
{
switch (recv(SocketServerCon, &r, 1, 0))
{
case 0: // not connected anymore but last line sent might not end in \n so return ret anyway.
return ret;
case -1:
return "";
throw Error(7,"Error in the receive line Server function",2);
default:
{
buffer[i] += r;
if (r == '\n')
return buffer[VALEUR];
}
}
}
}


J'ai utiliser un char ne sachant pas quoi utiliser d'autre pour mon tableau contenant les octets. Mais j'ai eu une erreur qui m'a dit qu'il fallait que je mette const* char au lieu de char.

Okay. Le problème c'est que j'aimerais faire un return avec ce tableaux et pouvoir le réutiliser dan le main pour le renvoyé vers un autre socket.

Mon programme est en faite une sorte de passerelle qui prend les données d'un côté et les revois de l'autre.

Aider moi s'il vous plait, j'ai chercher sur internet des réponses mais je ne comprend pas grand chose et ce que j'ai essayer n'a pas fonctionner.

Merci.

Bonne journée.

3 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
salut,

je pense qu'avoir appelé ton fichier socket.h (je suppose) n'est pas très judicieux vu que c'est aussi un .h système.

Il va falloir que tu utiles les semaphores (ou mutex) entre ton main et ta classe.

Avec, entre autre, les fonctions sem_wait et sem_post. Et attention au deadlock avec ce genre de chose.

Le main crée la classe socket, tu initialises le semaphore, tu passe l'id a la classe, tu fais ce que tu faisait, quand tu as ton buffer, tu fais un sem_post.
Ton buffer doit etre accessible par le main, donc tu peux le créer en tant que membre public de la classe.
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
29 juillet 2010
1
Merci pour la réponse,

Pour être précis mes fichiers se nomment SOCKET.

Pour les sémaphores je en connais pas du tout, je vais de ce pas me renseigner.

Encore merci.
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Statut
Membre
Dernière intervention
29 juillet 2010
1
Je n'arrive pas a savoir comment utiliser les sémaphore pour mon tableau.