begin process at 2012 02 11 14:23:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

projet simple mais nul en réseau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

projet simple mais nul en réseau

mardi 1 juin 2004 à 11:51:20 | projet simple mais nul en réseau

svincent9


Etant plutôt débutant en programmation (je ne connais que le C "de base") et totalement ignorant en programmation réseau, j'ai pensé faire appel à vous pour un petit projet perso où il est question de protocole UDP, liaison et port réseau.

Je vous explique : le récent simulateur de vol IL2 Forgotten Battles dipsose de la capacié d'exporter les paramètres de vol de l'avion piloté par le joueur. Il les exporte via un protocole UDP sur un port spécifié. Je voudrais savoir comment récupérer ces données.

Voici un extrait du readme.txt du jeu :
<<
The DeviceLink interface is meant to provide the third-party software with the
current condition of the player's aircraft as well as allow an unified method of
connecting alternative operating controls.

DeviceLink utilizes the UDP protocol to transfer the data. In this network, IL2
plays a part of the server. The external application sends a query packet, in
reply, IL2 sends back one (or several) packets containing the query result.
Proposing using the protocol within a single computer, ar a local network, no
data encoding is used and data integrity CRC-checks are not taken. Packets do
contain only symbolic information, the allowed range is (0x21-0x7e). A query
packet is preceded with an 'R' symbol, the resulting packed is preceded with an
'A'; followed by one or several "key"/"value" pairs. The "key" is the number
identifying a parameter. The "value" may be omitted or consist of a number of
copies. The semantics of the "value" depends on the parameter itself. The "keys"
are preceded with a '/', the "values" are preceded with a '\'. If a "value" is
to contain one of these symbols, it is preceded with a '\'. There are two types
of "keys" - (get) requiring to return the value of the given parameter, and
(set) setting the given parameter. The (get) keys are even while the latter ones
are odd. "Get-keys" may contain values for the specified parameter, the answer
packet returns the "value" with the "get-key". "Set-keys" may contain values for
the parameter, but with these the reply contains none.

Ex.:

key 40 - altimeter
key 81 - power
Query packet - R/40/81\1.6e-1
Return the aircraft altitude, and set the power to 1.6e-1.
Reply (answer) packet - A/40\534.3
Returns the current altitude 534.3 meters MSL.

The DeviceLink interface is activated if the [DeviceLink] section is found in the
conf.ini file. Within this section, "port" specifies the number of UDP port for
data transfer.
Using "host" parameter one can specify the address of the network interface in
use.
The "IPS" parameter restricts the allowed client IP addresses. If the "IPS"
parameter is not found in the section, any IP address is allowed to connect.

Ex.:

[DeviceLink]
port=10000
IPS=10.1.1.3 10.1.1.8

Port number is 10000, allowed clients are 10.1.1.3 and 10.1.1.8.
..........
(suite du readme.txt)
..........

Parameters - instruments readings.

speedometer_indicated
30 get()
return: float [km/h] +0.00 +inf

altimeter
40 get()
return: float [m] +0.00 +inf
>>

Ce que j'aimerais faire, c'est avoir un programme qui tourne en parallèle du jeu sur la même machine et qui récupère certaines données. Par exemple, on va dire que ce programme devrait interroger le jeu 1 fois par seconde pour connaitre la vitesse (résultat de speedometer_indicated ci-dessus) et l'altitude (résultat de altimeter ci-dessus), lire les réponses exportées par le jeu, et les inscrire dans un fichier texte.

Est-ce-que quelqu'un sait comment réaliser un tel programme en C (pour que je puisse le comprendre et ensuite l'adapter) ? Merci d'avance.



mardi 13 juillet 2004 à 11:03:47 | Re : projet simple mais nul en réseau

gnienfo

salut,

je pense que tu as moyen d'utiliser la libpcap ou winPcap (zindoz) qui est une librairie de fonctions pour recuperer tes paquets. Ensuite vu que tu as ton paquet dans un buffer, tu peux aller chercher les champs qui t'interressent (speedometer etc...)

la voila un tuto pas mal pour se familiariser avec les paquets et les sockets:
http://freecodz.net/articles/SocketTuto.html

la un tuto sur la libpcap pour comprendre les fonctions:
http://coding.romainl.com/article52.html

sinon un dernier tuto pour programmer un sniffer de paquet:
http://coding.romainl.com/article67.html

apres avoir recuperer tes paquets, il va falloir que tu cherches dedans pour savoir ou sont les infos qui t'interressent, enfin ca ce n'est pas le plus complique je pense...

voila je pense que tu as pas mal de lecture.
bon courage!




Cette discussion est classée dans : programme, projet, simple, réseau, jeu


Répondre à ce message

Sujets en rapport avec ce message

lire un fichier d'option [ par Vinsou ] Je dévellope un projet sous linux. Dans ce programme j'ai des variables qui contiennent le chemin de fichiers se trouvant sur le système, qui doivent une question toute simple.. aidez moi, stp!!! [ par xose ] Je viens d'installer le Borland C++. Une fois que le programme est compilé, la fenetre noire disparait toute suite!! Je n'arrive pas à voir jamais les DEV d'un projet c++ [ par mc.solaar3 ] Je tente de créer un programme qui constituerait un guide d'achat automobiles. Ce programme tiendra compte de nombreuses données et de nombreuses pré Qui à l'intention de créer un projet simple sur les base de données ? [ par Lallthis ] Le genre de projet où on ouvre un base, on écris dedans,et on recherche un élément. <--! Creation d'un jeu !--> [ par PeaceizNotDie ] Je cherche a creer une equipe pour creer un shoot 3d avec scenario dans l'environement du far west il me manque tous mes membres je suis tout seul pou C'Est simple jveux savoir comment donner un icone a mon programme [ par keiser ] Comment je peux faire pour changer l'icone du .exe ... je programmes juste avec borland c++ 5 Merci d'avance mes amis :) keiser ---u-@ Executer un programme sur ordis en réseau [ par Sardinoman ] BonjourCela me parait assez improbable mais je voudrai tout de meme savoir s'il est possible d'éxecuter un programme en fichiers partagés sur tous les pb programme très très simple [ par surfeurnet ] voila il s'agit d'un programme très simple qui ne fait pas d'erreurs à la compilation avec dev-cpp mais qui plante quand je l'exécute :#include char n notion de champs dans un programme.... [ par cabarrus ] salut j'ai des difficulté à comprendre la notion de champs dans un programme ansi que l'utilité des déclarations de champs...sin on peu me faire un pe je recherche un ou plusieur programmeurs et autres [ par Mikonos ] nous somme une petite equipe pour l'instant ou nous avons pour projet de creer un mod multijoueur avec le moteur de quakeil y a deja- 4 mappeurs - 3 m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales