Page 2 sur 3

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

Posté : dim. 20 mai 2012 22:03
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:

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

Posté : dim. 20 mai 2012 23:06
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.

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

Posté : dim. 20 mai 2012 23:36
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

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

Posté : sam. 26 mai 2012 11:30
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.

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

Posté : sam. 26 mai 2012 13:12
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.

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

Posté : sam. 26 mai 2012 13:21
par silvere
Super ! Merci beaucoup matwachich, je vais analyser ce scripte et te faire par de mon jeu :wink: .

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

Posté : lun. 28 mai 2012 11:56
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.

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

Posté : lun. 28 mai 2012 12:22
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 ?

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

Posté : lun. 28 mai 2012 12:25
par blacksoul305
C'est pour faciliter le traitement des données, mais sinon tout peut passer par le même port.

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

Posté : lun. 28 mai 2012 12:32
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

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

Posté : lun. 28 mai 2012 12:40
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.

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

Posté : lun. 28 mai 2012 12:44
par silvere
Ha d'accord, mais comment recevoir et envoyer en même temps alors ?

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

Posté : lun. 28 mai 2012 12:52
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

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

Posté : lun. 28 mai 2012 14:56
par silvere
alors ça donne ceci ?:
► Afficher le texte

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

Posté : lun. 28 mai 2012 15:05
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

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

Posté : lun. 28 mai 2012 15:17
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

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

Posté : lun. 28 mai 2012 15:34
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

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

Posté : lun. 28 mai 2012 15:42
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

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

Posté : lun. 28 mai 2012 15:47
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.

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

Posté : lun. 28 mai 2012 16:04
par silvere
Je comprend mieux pourquoi je n'y arrive pas car c'est tout simplement impossible :lol: