Discussion:
WebCam et Socket
(trop ancien pour répondre)
lacousine
2006-07-09 16:59:02 UTC
Permalink
Bonjour,

J'ai créé un client qui envoie l'image de la webcam à un serveur. Le serveur
sert de secrétaire et renvoie l'image à un autre client. Et se dernier
reconstruit l'image reçu.
Mon application envoie, par socket, l'image de ma webcam au 30
millisecondes. Au départ, l'image est entreposé dans un PictureBox. Par la
suite, je fais pictureBox1->Image->Save et j'entrepose cette image dans un
unsigned char __gc[]. Au début de ce tableau, j'ajoute une en-tête afin de
pouvoir reconstruire mon image chez mon deuxième client et l'afficher dans un
autre PictureBox.

Je crois que je me donne trop de mal à ajouter une en-tête et que je
pourrais trouver une solution qui me permettrait de faire moins de
manipulation sur l'image. Je connais que les sockets TCP et UDP. Que je
déclare généralement de cette façon : m_sck = new Socket(
AddressFamily::InterNetwork, SocketType::Stream, ProtocolType::Tcp );

Y a t-il une façon de faire que je ne connais pas? Pourriez-vous m'indiquer
d'autre alternative ?

Un gros merci.
Remi THOMAS
2006-07-10 05:23:06 UTC
Permalink
"lacousine" écrivit...
Post by lacousine
Bonjour,
J'ai créé un client qui envoie l'image de la webcam à un serveur. Le serveur
sert de secrétaire et renvoie l'image à un autre client. Et se dernier
reconstruit l'image reçu.
Mon application envoie, par socket, l'image de ma webcam au 30
millisecondes. Au départ, l'image est entreposé dans un PictureBox. Par la
suite, je fais pictureBox1->Image->Save et j'entrepose cette image dans un
unsigned char __gc[]. Au début de ce tableau, j'ajoute une en-tête afin de
pouvoir reconstruire mon image chez mon deuxième client et l'afficher dans un
autre PictureBox.
Je crois que je me donne trop de mal à ajouter une en-tête et que je
pourrais trouver une solution qui me permettrait de faire moins de
manipulation sur l'image. Je connais que les sockets TCP et UDP. Que je
déclare généralement de cette façon : m_sck = new Socket(
AddressFamily::InterNetwork, SocketType::Stream, ProtocolType::Tcp );
Y a t-il une façon de faire que je ne connais pas? Pourriez-vous m'indiquer
d'autre alternative ?
Un gros merci.
Bonjour,
J'ai beau relire je n'arrive pas à comprendre ta question.
Cela fonctionne ou pas?
Qu'entends-tu par "manipularion sur l'image"?

Rémi
lacousine
2006-07-10 15:17:01 UTC
Permalink
Présentement ça fonctionne. J'aimerais savoir comment je peux faire pour
envoyer l'image de la webcam sans sauvegarder l'image avant de pouvoir
l'envoyer par socket.
Qu'entends-tu par "manipulation sur l'image"?
Pour pouvoir reconstruire mon image qui est envoyé par socket, je dois
ajouter un code qui indique la grosseur de l'image. Voici mon protocole de
communication entre le serveur et les clients. ex: 14567|||donnéedonnéedonnée
Donc quand je reçois ce type d'en-tête je suis certaine que c'est une
nouvelle image.

Je me demandais si j'envoyais l'image sans cette en-tête comment je pourrais
: 1- m'assurer que c'est une nouvelle image 2- comment reconstruire celle-ci
lorsque je la recoit, en ne sachant pas sa grandeur
Paul Bacelar
2006-07-18 00:32:06 UTC
Permalink
Mon approche, c'est ne jamais réinventer la roue.

A- transférer des images entre un serveur et de multiples clients HTTP le
fait très bien et il existent une myriade librairies qui implémente HTTP
aussi bien coté serveur que coté client.

B- Les objets Image permettent de se sérialiser dans un stream qui sera le
flux de données de la réponse de HTTP.

http://msdn2.microsoft.com/en-us/library/ms142147.aspx



1- HTTP fait tout le boulot

2- Les clients HTTP ont l'habitude de recevoir des images :-).
--
Paul Bacelar
MVP VC++
Post by lacousine
Présentement ça fonctionne. J'aimerais savoir comment je peux faire pour
envoyer l'image de la webcam sans sauvegarder l'image avant de pouvoir
l'envoyer par socket.
Qu'entends-tu par "manipulation sur l'image"?
Pour pouvoir reconstruire mon image qui est envoyé par socket, je dois
ajouter un code qui indique la grosseur de l'image. Voici mon protocole de
14567|||donnéedonnéedonnée
Donc quand je reçois ce type d'en-tête je suis certaine que c'est une
nouvelle image.
Je me demandais si j'envoyais l'image sans cette en-tête comment je pourrais
: 1- m'assurer que c'est une nouvelle image 2- comment reconstruire celle-ci
lorsque je la recoit, en ne sachant pas sa grandeur
Loading...