[..] Jeux en résau (2j)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#21

Message par silvere »

Appelle a tout ceux qui savant coder du TCP si ils peuvent me faire un petit exemple avec un scripte serveur pour m'éclaircir les idées :lol:.
Merci d'avance :wink:
Modifié en dernier par silvere le dim. 20 mai 2012 23:21, modifié 1 fois.
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#22

Message par matwachich »

Bah, écoute, le TCP (Transfert Control Protocol) c'est un peut compliqué au début. Alors je te conseil de te faire d'abord les dents avec des trucs simples, pour ensuite essayé d'implémenter ce que tu aura appris sur ton jeu.

Si tu regarde dans le Help de mon UDF, tu trouvera 2 exemples de scripts simples:
- Un serveur: c'est en quelque sorte l'arbitre, tous les clients se connectent à lui.
- Un client: c'est un utilisateur si tu veux, il se connecte au serveur. Il peut y avoir plusieurs clients sur un même serveur.

Pour comprendre aussi, un serveur Web (qui contient un site internet) c'est la même chose, et les clients ici ce sont les navigateurs web qui demandent une page.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#23

Message par silvere »

J'ai compris la logique, mais je sais pas comment faire, j'ai regarder dans l'aide mais j'ai pas réussi pourrait-tu me faire un petit exemple client <==> serveur avec ton udf
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#24

Message par blacksoul305 »

Salut Silvere,

je poste pour te dire que j'ai attaqué un script serveur/client qui colle avec ton projet. Bien sûr, je commenterai (presque) chaque ligne de code puisque c'est plutôt compliqué à comprendre. Manquant de temps, j'espère avoir fini le tout et te l'envoyer dimanche ou lundi soir, sachant que j'ai terminé hier le script serveur.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#25

Message par matwachich »

Il y a pourtant un exemple dans le help de l'UDF.
Lance d'abord s.au3, en suite lance autant de fois c.au3 que tu veux.
Fichiers joints
Example.zip
(3.3 Kio) Téléchargé 90 fois
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#26

Message par silvere »

Super ! Merci beaucoup matwachich, je vais analyser ce scripte et te faire par de mon jeu :wink: .
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#27

Message par blacksoul305 »

Bon, bah je finirai quand même le truc de mon côté, en utilisant les fonctions "natives" d'AutoIt en matière de TCP.

EDIT : Voilà, j'ai finis le petit script TCP contenant serveur/client. Si tu as des questions je ferai en sorte de répondre, et écouter tes critiques ou autres remarques. Le code est commenté à pratiquement chaque ligne pour faciliter la compréhension de celui-ci. J'ai testé un serveur et deux clients sur mon PC et ça a l'air de bien marcher. Il manquera plus qu'à adapter ce script pour le placer dans ton jeu si jamais tu veux le faire avec les fonctions TCP.
Fichiers joints
TCP Silvere.rar
Archive contenant scripts serveur/client, .exe et les fichiers configs.
(570.93 Kio) Téléchargé 62 fois
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#28

Message par silvere »

O merci beaucoup blacksoul305 !

Edit : le port pour la connexion du premier joueur doit être obligatoirement différent du port pour la connexion du second joueur ?
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#29

Message par blacksoul305 »

C'est pour faciliter le traitement des données, mais sinon tout peut passer par le même port.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#30

Message par silvere »

@blacksoul305 je sais que tu a déjà fait un super scripte mais pourrais-tu corriger ce petit scripte s'il te plaît :
► Afficher le texte
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#31

Message par blacksoul305 »

► Afficher le texte
Dans ce code tu tentes de créer deux fois le même socket avec les même données, donc ça bloque.

Dis-toi qu'un socket c'est un porte. Tu as deux façons d'ouvrir cette porte :

TCPListen : Tu es l'hôte de la fête, tu ouvres la porte et attend que les personnes rentrent. Dès que quelqu'un se présente au pas de la porte, il faut que tu le fasses rentrer et donc, utiliser TCPAccept.

TCPConnect : Tu es invité à la fête mais tu dois attendre que l'hôte t'autorise à entrer. Si il y a une erreur, c'est que tu t'ais trompé de maison ou alors que tu n'es pas invité !

Cette analogie devra t'aider. A toi de savoir ce que tu veux faire donc.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#32

Message par silvere »

Ha d'accord, mais comment recevoir et envoyer en même temps alors ?
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#33

Message par blacksoul305 »

Ça y est dans mon script :

Si tu es l'hôte, tu reçois quelqu'un ouvrant ta porte. Quelqu'un se présente tu l'acceptes, et ensuite tu peux lui parler. Dans l'ordre on a :

Code : Tout sélectionner

TCPListen
TCPAccept
TCPSend ou TCPRecv
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#34

Message par silvere »

alors ça donne ceci ?:
► Afficher le texte
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#35

Message par blacksoul305 »

Tiens, voici le code corrigé et commenté !

Code : Tout sélectionner

#include <Inet.au3>
#include <Misc.au3>

Global $port = 80, $packet = "test", $IP =  _GetIP, $recv

TCPStartup()

$Mainsocket = TCPListen($IP, $port) ; ici on ouvre la porte et on attend que quelqu'un se présente
If $Mainsocket = -1 Then ; si la porte est vérouillée
    MsgBox(16, "Erreur", "création du socket impossible, erreur n°" & @error)
    Exit
EndIf

$isConnected = -1 ; on initiliase la variable à -1, c'est à dire que personne s'est présenté

Do 
    $isConnected = TCPAccept($Mainsocket) ; on accepte une connexion
    Sleep(20)
Until $isConnected <> -1 ; tant que personne s'est connecté

While 1
    $recv = TCPRecv($isConnected, 9999)
    If $recv <> "" Then MsgBox(0, "", "Packet ressus : " & $recv)
    If _IsPressed("26") Then
        TCPSend($socket, $packet)
        MsgBox(0, "", "Packet envoyer : " & $packet)
    EndIf
WEnd
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#36

Message par silvere »

Enfin corriger entre guillemet car il y a encore des erreur :lol:
Mais je comprend pas, avec le scripte ci-dessous, il reste dans le boucle do Until
► Afficher le texte
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#37

Message par blacksoul305 »

Bah, non du tout même. Teste ce script, et ensuite lance (en ayant configuré le fichier config correctement) le Client.exe que j't'ai envoyé ce matin :
► Afficher le texte
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#38

Message par silvere »

Ha mince je pense que tu n'a pas compris ce que je voulais faire avec ce scripte, c'est qu'il reçoit ce qu'il a envoyer. C'est pour m’entrainer au TCP
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#39

Message par blacksoul305 »

Je pensais bien que ça n'allait pas être possible :
► Afficher le texte
Dans ce script, tu arrives bien à te connecter à toi même, sauf que tu peux pas et envoyer des données, et en recevoir. Donc tu reçois jamais rien.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] Jeux en résau (2j)

#40

Message par silvere »

Je comprend mieux pourquoi je n'y arrive pas car c'est tout simplement impossible :lol:
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Répondre