Salut !

Je me trouve devant un petit problème et je cherche des conseils donc je suis venu demander ici ...

J'ai une machine d'acquisition qui envoie à mon PC un tableau de floats. Je récupère ce tableau dans un programme client, et je souhaite l'envoyer à un programme serveur.

Vu qu'il s'agit juste d'un tableau de float j'ai penché pour le choix des sockets (j'ai vu qu'on pouvait facilement les rendre portables avec quelques librairies, ou simplement des #ifdef ...). J'avais aussi pensé à un ORB mais ça fait peut-être un peu lourd juste pour un envoi de tableau. En plus il me faut un envoie assez rapide, le but est de se rapprocher du temps réel (est-ce que les ORB sont moins rapide? ça je ne sais pas ...)

Bon mon problème est que j'insère mon tableau de floats dans un flot (je les sépare par des ; pour les différencier), puis j'envoie le char* correspondant par socket à mon serveur ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
std::ostringstream oss;
for(int i=0; i < nbCol; i++){
	oss << (float)fData[i] << ";";
}
oss << "\r\n";
std::string result = oss.str();
send(Acquisition::sock, result.c_str(), result.size(), 0);
Jusque là ça marche bien ...
Si j'essaye de relire de suite mon float ça marche parfaitement aussi ...

Par contre côté serveur j'ai un problème ...
Si je mets une tempo après le send tout se passe bien, il envoi de suite la ligne lue et c'est parfait ...
Si par contre je n'ai pas de tempo (ce qui est le but vu que je veux du temps réel) il envoi plus vite que je ne lis, et du coup il accumule les lignes dans un buffer. Du coup il charge parfois dans le buffer un début de ligne (en fin de buffer) et la fin est chargée au coup d'après.

Je voulais savoir comment je pourrais parser facilement du côté serveur mon flot (sachant que chaque ligne fait toujours le même nombre de floats durant une exécution) sans avoir le problème de lignes coupées, et si possible avec une méthode me débarassant d'un caractère de séparation ...

Je sais c'est peut-être pas très bien expliqué ... j'espère que j'ai tout de même réussit à être le plus clair possible ...