Bonjour à tous!!
Je suis en train de bricoler un jeu vidéo, avec pour architecture celle mise en fichier joint.
Donc le client cherche à se connecter au serveur si les identifiants entrés dans le client correspondent à ceux dans la base de donnée, et y arrive, le seul soucis, c'est que si je relance mon client, et cherche à me connecter à nouveau, le serveur ne réagis même pas:
#include<Inet.au3>
#include<array.au3>
Global $mainSocket, $IP = @IPAddress1, $port = 9995, $max = 50, $socket, $recv = 1,$nb_perso_connect=0,$persos[11]
TCPStartup()
$mainSocket = TCPListen($IP,$port,$max)
If $mainSocket = -1 Or $mainSocket = 0 Then
MsgBox(16,"Erreur du serveur", "Impossible de communiquer avec le serveur.")
TCPShutdown()
Exit
EndIf
Do
$socket = TCPAccept($mainSocket)
Sleep(10)
Until $socket <> -1
While $recv <> "exit"
$recv = TCPRecv($socket,9999)
If $recv <> "" Then
Local $tempArray
$tempArray = StringSplit($recv,"|")
If Not @error Then
Switch $tempArray[2]
case "3"
$search=_ArraySearch($persos,$tempArray[1])
if @error Then
MsgBox(64,"Test jeu","Nouveau personnage en ligne."&@CRLF&"Son pseudo est "&$tempArray[1]&".")
$persos[$nb_perso_connect]=$tempArray[1]
$nb_perso_connect+=1
MsgBox(64,"Test jeu","Avec vous, cela nous fait "&$nb_perso_connect&" perso(s) connecté(s).")
Else
MsgBox(48,"Test jeu","Personnage déjà connecté")
EndIf
EndSwitch
EndIf
EndIf
Wend
TCPCloseSocket($mainSocket)
TCPShutdown()
Exit
Func _QueryToServeur($id)
TCPStartup()
$socket = TCPConnect($IP,$port)
If $socket = -1 Or $socket = 0 Then
MsgBox(16,$gamename, "Impossible de se connecter au serveur!")
TCPShutdown()
Exit
EndIf
local $toSend=$id&"|3";on envois au serveur l'id du perso connecté, et le délimiteur | délimite le pseudo de l'action. Ici 3 est l'action de connexion
TCPSend($socket,$toSend)
MsgBox(64,$gamename,"Vous vous êtes connecté avec succès!")
TCPCloseSocket($socket)
TCPShutdown()
sleep(500)
Exit
EndFunc
Merci d'avance!!
Fichiers joints
structure
Modifié en dernier par sozary le mar. 22 juil. 2014 10:00, modifié 1 fois.
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Bonjour,
de ce que j'ai lu dans ton serveur, tu attend de recevoir le message "exit" pour quitter la boucle.
Le problème c'est que type de serveur sera adéquat pour un mono client, non pour multi client étant donné qu'il quitte une fois qu'un client envoi le message "exit".
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Ah, euh oui en effet.. J'ai suivis le tutoriel sur le forum, mais il ne précisait pas comment faire avec plusieurs client. Comment pourrai-je procéder?
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli