CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Programmation résaux pour les nuls

sn00bino
sn00bino
Niveau 5
02 mars 2008 à 19:01:47

lu,

Ce que j' ai pijé c 'est qu'il y a 3 façon pour le serveur d' envoyer ses données. Soit il donne la taille dans le header, soit il fait par packet ( chunked ), soit il envoit et ferme la connection. Pour les 2 premiers sa va, pour le 3eme par contre je sais pas comment faire pour voir si la connection a été fermé.

Note : j' utilise les winsock 2.

++

dnob700
dnob700
Niveau 10
02 mars 2008 à 21:32:49

tu parle du coté client ?

Quand tu lis sur un socket, si la fonction read renvoie 0 c'est que la connection a été fermé (c'est le "end of file" comme pour un fichier).

sn00bino
sn00bino
Niveau 5
03 mars 2008 à 17:49:00

le probléme c 'est que ya un ptit temps ( genre 10 secondes ) avant qu' elle ne renvoie 0, parcequ' elle attend des données.

dnob700
dnob700
Niveau 10
03 mars 2008 à 20:40:34

tu appelle bien socket_close (CloseSocket ?) du coté de ton serveur ?
Je me souviens qu'il y a une astuce pour détecter la fermeture d'une socket au niveau du réseau, mais normalement c'est géré par le système correctement.

Es-tu sûr dans tout les cas que ce soit la bonne manière de faire ? Ton serveur pourrais envoyer la taille des données qui va émettre avant d'émettre les données elle même et comme ça, tu sais quand est-ce qu'il faut arrêter de lire.

sn00bino
sn00bino
Niveau 5
04 mars 2008 à 18:14:27

c 'est pas mon serveur, c' est pour le protocole http. Excuse moi de pas l' avoir précisé

dnob700
dnob700
Niveau 10
04 mars 2008 à 21:57:45

Le serveur http te transmet la taille des données dans l'en tête du paquet.
Par contre il n'est pas obligé de fermer la connection après l'envoie des données (d'où ton délai de 10 secondes) au cas où tu voudrais faire tout de suite une nouvelle requête.

Si tu veux que le serveur ferme tout de suite la connections, tu peut inclure le paramètre "Connection:close" dans la requête, normalement le serveur doit le prendre en compte, mais rien ne l'y oblige.

godrik
godrik
Niveau 30
05 mars 2008 à 11:26:16

ou faire de l'http 1.0, il n'y avait pas de connexion keep alive en 1.0

sn00bino
sn00bino
Niveau 5
06 mars 2008 à 18:18:42

Non dnob, le serveur n' est pas obligé de donner la taille du packet dans l' en tête. Il peut aussi utiliser le mode chunked ou encore ne rien dire du tout et fermé la connection à la fin. C 'est ce dernier cas qui m' intéresse.

dnob700
dnob700
Niveau 10
06 mars 2008 à 21:18:19

il peut utiliser le mode chunked comme tu dit, mais dans ce cas là, il te donne quand même la taille de chaque paquet avant de les émettres, ça revient donc au même. Et par contre, je ne suis pas au courant que le serveur puisse ne rien indiquer et juste fermer la connection.

Quel version du protocol utilise tu ? (le mode chunked est du http1.1 seulement je pense) - pas que ça change quoi que ce soit, à ma connaissance dans tout les cas on a la taille des données dans l'en tête.

sn00bino
sn00bino
Niveau 5
07 mars 2008 à 13:14:31

oé jsuis en 1.1. Et pour le chunked je le gére déja. Il y a juste le probléme de la fermeture de la connection.
Si tu doutes tu peux regarder sur le site de w3. Je crois que c 'est la référence en la matiére.

Par exemple, Gamedev ne fait ne donne pas la taille, et n' utilise pas chunked non plus.

dnob700
dnob700
Niveau 10
08 mars 2008 à 18:34:36

bon, alors tu as raison, gamedev ne donne pas la taille des données dans l'en tête. Par contre, il ferme la connexion dès la fin de la transmission. On en revient donc à ton premier problème celui de détecter la fermeture de cette connexion.

Est-ce que tu pourrais nous passer le code que tu utilise pour qu'on puisse regarder ? Car "normalement" tu obtiens un eof (read renvoie 0) dès la fermeture de la connexion.

sn00bino
sn00bino
Niveau 5
13 mars 2008 à 17:53:56

en fait c' est bon tu as raison, il faut bien attendre que recv renvoie 0. merci.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment