Difference between revisions of "Server Queries:fr"

From Valve Developer Community
Jump to: navigation, search
(début de la traduction)
 
Line 1: Line 1:
[[Category:Programming]] [[Category:Technical]]
+
Il est possible d'interroger un serveur de jeu en ligne, en utilisant des paquets UDP/IP. Ce document décrit les différents formats de paquets ainsi que les types de requêtes possibles.
Il est possible d'interroger un serveur de jeu en ligne, en utilisant des paquets UDP/IP. Ce document décrit les différents formats des paquets ainsi que le protocole permettant de les traiter.
+
= Types de données =
=Types de données élémentaires=
+
Chaque requête ou réponse utilise cinq types de base agencés ensemble pour former un flux de données. Tous ces types sont little-endian, il n'y a donc aucune conversion à effectuer sur un processeur x86.
Chaque requête ou réponse serveur utilise cinq types de données élémentaires agencés ensemble pour former un flux de données. Tous ces types sont little-endian, il n'y a donc aucune conversion à effectuer sur un processeur x86.
+
{|
 +
! Type !! Description
 +
|-
 +
| [[byte]] || Caractère non signé (8 bits).
 +
|-
 +
| [[short]] || Entier court signé (16 bits).
 +
|-
 +
| [[long]] || Entier long signé (32 bits).
 +
|-
 +
| [[float]] || Nombre à virgule flottante (32 bits).
 +
|-
 +
| [[string]] || Suite d'octets de longueur variable terminée par le caractère NUL.
 +
|}
 +
= Protocole =
 +
La taille des paquets utilisés par [[Steam]] est de 1400 octets en plus d'un en-tête UDP/IP. Chaque réponse contient un en-tête propre au protocole, mais si une réponse nécessite plus d'un paquet elle sera découpée et chaque paquet comprendra un en-tête additionnel.
 +
== Réponse simple ==
 +
{|
 +
! Donnée !! Type !! Commentaire
 +
|-
 +
| En-tête || [[long]] || Toujours égal à -1 (0xFFFFFFFF).
 +
|-
 +
| colspan="3" | Données
 +
|}
 +
== Réponse multi-paquets ==
 +
=== Serveur [[Goldsource]] ===
 +
{|
 +
! Donnée !! Type !! Commentaire
 +
|-
 +
| En-tête || [[long]] || Toujours égal à -2 (0xFFFFFFFE).
 +
|-
 +
| ID || [[long]] || Numéro unique attribué par le serveur à chaque paquet appartenant à la même réponse.
 +
|-
 +
| Nombre et numéro de paquet || [[byte]] || Les 4 bits de poids fort représentent le numéro du paquet courant (en commençant à 0) et les 4 bits de poids faible représentent le nombre total de paquets (de 2 à 15).
 +
|-
 +
| colspan="3" | Données
 +
|}
 +
=== Serveur [[Source]] ===
 
{|
 
{|
! Nom || Description
+
! Donnée || Type || Commentaire
 +
|-
 +
| En-tête || [[long]] || Toujours égal à -2 (0xFFFFFFFE).
 +
|-
 +
| ID || [[long]] || Même signification que pour un serveur [[Goldsource]], cependant si le bit de poids fort est à 1 alors la réponse a été compressé avec l'algorithme Bzip2 avant d'être découpée. Après avoir récupéré et assemblé tous les paquets il faut décompresser la réponse (avec [http://www.bzip.org/1.0.3/html/util-fns.html#bzbufftobuffdecompress BZ2_bzBuffToBuffDecompress()] en C ou [http://fr.php.net/manual/fr/function.bzdecompress.php bzdecompress()] en PHP par exemple) avant de pouvoir la traiter.
 +
|-
 +
| Nombre de paquets || [[byte]] ||
 +
|-
 +
| Numéro de paquet || [[byte]] || La numérotation commence à 0.
 
|-
 
|-
| [[byte]] || caractère non signé (8 bits)
+
| Taille des paquets || [[short]] || Uniquement présent dans la nouvelle version du moteur [[Source]], il s'agit de la taille maximale que peut prendre un paquet avant qu'un découpage ne se produise (auparavant il était impossible de changer cette taille). Cela concerne uniquement le protocole de jeu, dans celui d'interrogation des serveurs il n'est toujours pas possible de demander des paquets de plus petite taille que celle par défaut. La valeur par défaut est de 1248 octets (0x04E0), mais un administrateur de serveur [[Team Fortress 2]] peut la diminuer.
 
|-
 
|-
| [[short]] || entier court signé (16 bits)
+
| colspan="3" | Uniquement présent dans le premier paquet (numéro 0) si la réponse a été compressé :
 +
{| style="margin:10px"
 +
! Donnée || Type || Commentaire
 
|-
 
|-
| [[long]] || entier long signé (32 bits)
+
| Taille de la réponse || [[long]] || Nombre d'octet qu'occupe la réponse une fois décompressée.
 
|-
 
|-
| [[float]] || nombre à virgule flottante (32 bits)
+
| Somme CRC32 || [[long]] || Somme de contrôle CRC32 de la réponse décompressée.
 +
|}
 
|-
 
|-
| [[string]] || suite d'octets de longueur variable terminée par le caractère NUL
+
| colspan="3" | Données
 
|}
 
|}
 +
Comme les paquets UDP peuvent arriver dans le désordre et en différé, chaque paquet devrait être contrôlé avec son ID et son numéro pour s'assurer qu'il s'agit toujours de la même réponse !
  
 +
= Voir aussi =
 +
== Articles connexes ==
 +
* [[Master Server Query Protocol]]
 +
* [[Source Server Query Library]]
 +
== Liens externes ==
 +
* [http://www.valve-erc.com/srcsdk/Code/Networking/serverqueries.html Server Queries sur Valve ERC]
 
{{otherlang:fr}}
 
{{otherlang:fr}}
 
{{otherlang:fr:en|Server_Queries}}
 
{{otherlang:fr:en|Server_Queries}}
 +
[[Category:Programming]] [[Category:Technical]]

Revision as of 18:25, 18 January 2008

Il est possible d'interroger un serveur de jeu en ligne, en utilisant des paquets UDP/IP. Ce document décrit les différents formats de paquets ainsi que les types de requêtes possibles.

Types de données

Chaque requête ou réponse utilise cinq types de base agencés ensemble pour former un flux de données. Tous ces types sont little-endian, il n'y a donc aucune conversion à effectuer sur un processeur x86.

Type Description
byte Caractère non signé (8 bits).
short Entier court signé (16 bits).
long Entier long signé (32 bits).
float Nombre à virgule flottante (32 bits).
string Suite d'octets de longueur variable terminée par le caractère NUL.

Protocole

La taille des paquets utilisés par Steam est de 1400 octets en plus d'un en-tête UDP/IP. Chaque réponse contient un en-tête propre au protocole, mais si une réponse nécessite plus d'un paquet elle sera découpée et chaque paquet comprendra un en-tête additionnel.

Réponse simple

Donnée Type Commentaire
En-tête long Toujours égal à -1 (0xFFFFFFFF).
Données

Réponse multi-paquets

Serveur Goldsource

Donnée Type Commentaire
En-tête long Toujours égal à -2 (0xFFFFFFFE).
ID long Numéro unique attribué par le serveur à chaque paquet appartenant à la même réponse.
Nombre et numéro de paquet byte Les 4 bits de poids fort représentent le numéro du paquet courant (en commençant à 0) et les 4 bits de poids faible représentent le nombre total de paquets (de 2 à 15).
Données

Serveur Source

Donnée Type Commentaire
En-tête long Toujours égal à -2 (0xFFFFFFFE).
ID long Même signification que pour un serveur Goldsource, cependant si le bit de poids fort est à 1 alors la réponse a été compressé avec l'algorithme Bzip2 avant d'être découpée. Après avoir récupéré et assemblé tous les paquets il faut décompresser la réponse (avec BZ2_bzBuffToBuffDecompress() en C ou bzdecompress() en PHP par exemple) avant de pouvoir la traiter.
Nombre de paquets byte
Numéro de paquet byte La numérotation commence à 0.
Taille des paquets short Uniquement présent dans la nouvelle version du moteur Source, il s'agit de la taille maximale que peut prendre un paquet avant qu'un découpage ne se produise (auparavant il était impossible de changer cette taille). Cela concerne uniquement le protocole de jeu, dans celui d'interrogation des serveurs il n'est toujours pas possible de demander des paquets de plus petite taille que celle par défaut. La valeur par défaut est de 1248 octets (0x04E0), mais un administrateur de serveur Team Fortress 2 peut la diminuer.
Uniquement présent dans le premier paquet (numéro 0) si la réponse a été compressé :
Donnée Type Commentaire
Taille de la réponse long Nombre d'octet qu'occupe la réponse une fois décompressée.
Somme CRC32 long Somme de contrôle CRC32 de la réponse décompressée.
Données

Comme les paquets UDP peuvent arriver dans le désordre et en différé, chaque paquet devrait être contrôlé avec son ID et son numéro pour s'assurer qu'il s'agit toujours de la même réponse !

Voir aussi

Articles connexes

Liens externes

Template:Otherlang:fr Template:Otherlang:fr:en