Accueil > Forum > > > > Réception de données sur socket.
Réception de données sur socket.
mardi 22 avril 2003 à 10:20:53 |
Réception de données sur socket.

julien20vt
|
Bonjour, J'ai un doute concernant l'utilisation de sockets. Si coté serveur j'utilise un buffer de taille X pour lire sur ma socket, ce serveur reste en attente tant qu'il n'a pas lu exactement X octets, c'est ca ? Donc si coté client j'ai également un buffer de taille X pour lire dans un fichier et envoyer les données sur cette socket, tout se passe bien sauf pour le dernier "morceau" de données à envoyer, car il ne fera certainement pas X octets cette fois. Comment faire pour que le serveur ne reste pas bloqué en attendant d'autres données si je n'ai plus rien à lui envoyer ? Merci.
|
|
mardi 22 avril 2003 à 10:51:07 |
Re : Réception de données sur socket.

roswell117
|
> Bonjour, Bonjour à toi
> J'ai un doute concernant l'utilisation de sockets. > Si coté serveur j'utilise un buffer de taille X pour lire sur ma socket, ce serveur reste en attente tant qu'il n'a pas lu exactement X octets, c'est ca ?
non, le serveur va attendre des paquets que tu vas ranger dans un buffer de taille X.
memset(buffer,0,sizeof(buffer)); (sock,buffer,sizeof(buffer),0);
en fait, le serveur va rester en attente tant qu'il ne recoit pas de paquets (avec une boucle while après le listen).
> Donc si coté client j'ai également un buffer de taille X pour lire dans un fichier et envoyer les données sur cette socket, tout se passe bien sauf pour le dernier "morceau" de données à envoyer, car il ne fera certainement pas X octets cette fois.
Donc tout se passera bien, même pour le dernier "morceau" de données
> Comment faire pour que le serveur ne reste pas bloqué en attendant d'autres données si je n'ai plus rien à lui envoyer ?
si tu n'as plus rien à envoyer, ferme ton socket.
> Merci. si la réponse te convient, alors de rien, sinon précises un peu plus.
|
|
mardi 22 avril 2003 à 11:03:41 |
Re : Réception de données sur socket.

julien20vt
|
La réponse me convient merci.
Si j'ai bien saisi alors, le serveur recoit un paquet d'une taille inférieure ou égale à celle de mon buffer qui recoit les données.
Mon buffer peut donc très bien avoir une structure particulière, cad que si je sais que j'envoie une structure de type Ma_struct défini plus tôt dans mon programme, je peux très bien coté serveur récupérer les données directement dans un buffer de type Ma_struct ?
------------------------------- Réponse au message : -------------------------------
> > Bonjour, > Bonjour à toi > > > J'ai un doute concernant l'utilisation de sockets. > > Si coté serveur j'utilise un buffer de taille X pour lire sur ma socket, ce serveur reste en attente tant qu'il n'a pas lu exactement X octets, c'est ca ? > > non, le serveur va attendre des paquets que tu vas ranger dans un buffer de taille X. > > memset(buffer,0,sizeof(buffer)); > (sock,buffer,sizeof(buffer),0); > > en fait, le serveur va rester en attente tant qu'il ne recoit pas de paquets (avec une boucle while après le listen). > > > Donc si coté client j'ai également un buffer de taille X pour lire dans un fichier et envoyer les données sur cette socket, tout se passe bien sauf pour le dernier "morceau" de données à envoyer, car il ne fera certainement pas X octets cette fois. > > Donc tout se passera bien, même pour le dernier "morceau" de données > > > Comment faire pour que le serveur ne reste pas bloqué en attendant d'autres données si je n'ai plus rien à lui envoyer ? > > si tu n'as plus rien à envoyer, ferme ton socket. > > > Merci. > si la réponse te convient, alors de rien, sinon précises un peu plus.
|
|
mardi 22 avril 2003 à 11:35:02 |
Re : Réception de données sur socket.

roswell117
|
> La réponse me convient merci. Super, j'ai fait un heureux !!!
> Si j'ai bien saisi alors, le serveur recoit un paquet d'une taille inférieure ou égale à celle de mon buffer qui recoit les données.
Le serveur recoit un paquet de données et c à toi d'adapter la taille du buffer. Si tu envoie des données de taille X, ton buffer doit avoir une taille de X au minimum.
> Mon buffer peut donc très bien avoir une structure particulière, cad que si je sais que j'envoie une structure de type Ma_struct défini plus tôt dans mon programme, je peux très bien coté serveur récupérer les données directement dans un buffer de type Ma_struct ?
Je ne penses pas car quand tu recoit les données par (sock,buffer,sizeof(buffer),0); et buffer est de type char. Je ne sait pas comment tu pourrait te débrouiller pour l'obtenir directement, ou sinon, utilises des délimiteurs entres les différentes variables de ta structure.
|
|
mardi 22 avril 2003 à 11:54:07 |
Re : Réception de données sur socket.

julien20vt
|
Ce qu'il y a de sur c'est que ca marche en C, j'ai dejà eu l'occasion de le faire cette année, donc en je vais tester en C++ pour voir ce que ca donne.
Un autre question : Est-ce qu'on est limité en tailler pour l'envoi d'un paquet sur la socket ? si je veux envoyer un buffer de 5Mo est-ce que ca passe ?
------------------------------- Réponse au message : -------------------------------
> > La réponse me convient merci. > Super, j'ai fait un heureux !!! > > > Si j'ai bien saisi alors, le serveur recoit un paquet d'une taille inférieure ou égale à celle de mon buffer qui recoit les données. > > Le serveur recoit un paquet de données et c à toi d'adapter la taille du buffer. Si tu envoie des données de taille X, ton buffer doit avoir une taille de X au minimum. > > > Mon buffer peut donc très bien avoir une structure particulière, cad que si je sais que j'envoie une structure de type Ma_struct défini plus tôt dans mon programme, je peux très bien coté serveur récupérer les données directement dans un buffer de type Ma_struct ? > > Je ne penses pas car quand tu recoit les données par > (sock,buffer,sizeof(buffer),0); > et buffer est de type char. > Je ne sait pas comment tu pourrait te débrouiller pour l'obtenir directement, ou sinon, utilises des délimiteurs entres les différentes variables de ta structure.
|
|
mardi 22 avril 2003 à 12:55:43 |
Re : Réception de données sur socket.

roswell117
|
> Un autre question : Est-ce qu'on est limité en tailler pour l'envoi d'un paquet sur la socket ? si je veux envoyer un buffer de 5Mo est-ce que ca passe ?
Je sais que le paquet est limité en taille (1524 octets je crois), mais je ne sais pas ce qui va se passer au niveau de l'envoi et de la réception, est-ce qu'il va tout fragmenter et reconstruire ? Le plus simple étant de découper ton buffer à la taille maximale d'un paquet et d'ensuite envoyer les paquets les uns à la suite des autres. A la réception, il reste plus qu'à recoller les bouts dans le bon ordre. Sinon, je peut pas te dire ce qu'il va faire, fait un essai en envoyant 1Mo, si ca passe c bon, sinon essaye ce qui est plus haut.
|
|
dimanche 3 juillet 2005 à 14:00:16 |
Re : Réception de données sur socket.
|
Cette discussion est classée dans : données, serveur, envoyer, socket, réception
Répondre à ce message
Sujets en rapport avec ce message
Serveur Vc++6 pb dans recv [ par alfred ]
Salut a tousJ'ai un probleme dans mon serveur et je ne sais pas comment le resoudre. Le client se connecte bien et envoie le bon nombre de caracteres
Envoyer et recevoir un fichier par Socket en C [ par coolboy78 ]
Bonjour,j'aimerai Envoyer et recevoir un fichier par Socket en C. Mais je n'ai pas trouvé de fonction ni d'exemple pour ceci.Si kelkun pouvez maider,
bind bought bought lier [ par JoebarGlut ]
Salut, j'ai un piti problem de bind, kelkun peut il m'eclairer ?j'explik : (c'est un client qui se metamorphose en serveur ou en client suivant ce qu'
J'arrive pas à recevoir (C++) [ par lukilou ]
Salut, j'ai un petit problème pour la réception d'info mais j'arrive bien à envoyer.Je passe la déclaration du socket etc car ca fonctionne.listen(soc
sockets: méthode accept() [ par julien20vt ]
Voila,je viens de coder le serveur de ma socket et ce qui me parait etrange c'est que la méthode accept() n'est pas bloquante, je pensais que le serve
encore mon serveur [ par skysee ]
bonjour,je suis toujours avec mon serveur en c sous visual c++ sous windows(sis eulement j'avais linux).Le problème est que je n'ai pas d'erreur de co
Problème d'envoie par socket [ par CyberP ]
J'ai fait un programme qui se connecte à un serveur ftp (le serveur ftp est aussi sur mon ordi). Je me connecte avec la fonction connect() et je recoi
Tutorial - Socket, serveur, client BCPP + GUI [ par NyxArm ]
Bonjours tout le monde, je suis présentement en période d'appretissage du language CPP sur Borland(v.6). Maintenant que j'ai acquis quelque conna
socket et fichiers textes : HELP !! [ par ben01n ]
Salut tout le monde !je prog actuellement un client serveur en udp multicast sous linux (voir source sur ce site) et j'aimerais que mon serveur envoi
pb connetion reseau multiutilisateurs [ par JRB ]
lorsque l'on veut creer une connection reseau ou plusieurs clients peuvent se connecter sur le meme serveur, est ce que le serveur doit creer un socke
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|