coucoumiya
Messages postés2Date d'inscriptionmardi 23 juin 2009StatutMembreDernière intervention15 juillet 2009
-
14 juil. 2009 à 17:09
cs_goodboy21
Messages postés29Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention11 avril 2010
-
16 juil. 2009 à 13:21
bonjour, moi je travaille avec les sockets sous le procole de transmission TCP/IP.
mon client est programmé avec Builderc++ sous windows.
mon serveur est programmé avec C sous Linux.
mon programme consiste a envoyé une sequence d'images de mon serveur vers le client, jai reussi a envoyé une seul image du serveur au client mais le pbs se pose lorsque je met la portion de programme dans un while(true) pour la sequence, j'arrive pas a synchroniser le client et le serveur?
je sait pas si je doit utiliser ou pas les sockets non bloquantes? et quand je doit les utiliser?
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 14 juil. 2009 à 22:31
Salut, c'est là où il faut écrire un protocole véhiculé par TCP, pour que les machines puissent communiquer (comme HTTP, FTP, etc). Dans ton cas le client commence par envoyer un paquet pour dire au serveur: je t'envoie un fichier. Le serveur répond au client "vas-y" et entame une boucle de recv(). Le client envoie alors l'image.
Mieux... Si le client envoie dès le départ la taille de l'image cad le nombre d'octets qu'il va envoyer, le serveur à chaque fois qu'il reçoit un paquet regarde la taille déjà reçue et si supérieure à la taille totale indiquée par le client au début, alors c'est fini! Tu suis toujours?
note ça peut valoir le coup de passer en UDP si l'image n'est pas trop grande et bien compressée pour le transit.
coucoumiya
Messages postés2Date d'inscriptionmardi 23 juin 2009StatutMembreDernière intervention15 juillet 2009 15 juil. 2009 à 16:41
merci pour votre reponse.
mais je pense qu'il faut que j'explique mieux, alors j'ai reussi a envoyé une image brute(extension ima) du serveur au client( la taille 120*160)comme je sait que la socket supporte un nombre limité d'octets ou pixels donc j'ai fixé la taille a 1280 pixel par socket donc mon image s'envoie sur 8 sockets(120*160/1280=8)tous ca pour une seul image j'ai utiliser les sockets bloquantes, mais pour l'envoie d'une sequence d'images j'ai lu qu'il faut utiliser les sockets non bloquante a l'interieur de la boucle while(true), j'ai jamais utiliser ses sockets et je sais pas comment m'y prendre, surtous que je sait que le nombre de données est important?
cs_goodboy21
Messages postés29Date d'inscriptionsamedi 1 décembre 2007StatutMembreDernière intervention11 avril 2010 16 juil. 2009 à 13:21
salut, les sockets bloquants sont efficace pour envoyé de petits messages comme un tchat par exemple, dès que tu envoie beaucoup de données et que le buffer(il fait 8Ko par défaut) d'envoi est plein, le socket bloque indéfiniment jusqu'a ce que tu le passes en mode non-bloquant. comme dit plus haut, le mieux c'est que tu inventes ton propre protocol de communication au-dessus de la couche tcp, et ensuite d'utiliser les sockets non-bloquant, si tu programmes sous windows WSAAsyncselect marche très bien sinon fait des recherches sur le net, ce n'est pas les explications qui manque..
Cordialement.....