Bonjour / Bonsoir,
j'ai besoin d'aide pour un projet que je suis entrain de réaliser en ISN (Informatique et Sciences du Numérique), option en terminale S du lycée.
Pour le bac nous devons créer un projet de notre choix programmé en langage Python.
Nous sommes 3, et nous souhaitons créer un jeu. Un 1 contre 1, sur une carte 2D, avec une arme, une épée par exemple.
Ce jeu sera en réseau local. Joueur 1 sur un ordinateur, joueur 2 sur l'autre.
Cependant, j'ai un problème, je souhaite créer un serveur en local, en utilisant le module socket. Je n'arrive pas a me connecté au serveur entre les 2 ordinateurs sur le même réseau.
J'aimerai savoir si quelqu'un pourrait m'aider à créer mon serveur, pour communiquer entre les 2 ordinateurs.
Voici mon programme actuel :
Serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 import socket import threading class serveur(threading.Thread): """docstring for serveur""" def __init__(self, arg): threading.Thread.__init__(self) self.arg = arg def run(self) : global dictio nom = self.getName() continuer = True while continuer : try : message = self.arg.recv(1024).decode("Utf8") except socket.error : continuer = False break else : for cle in dictio : if cle != nom: dictio[cle].send(message.encode("Utf8")) del(dictio[nom]) for cle in dictio : dictio[cle].send(("Le client {0} vient de se déconnecter.".format(nom)).encore("Utf8")) host = 'localhost' port = 9000 dictio = {} mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try : mysock.bind((host, port)) except socket.error : print("Le serveur n'a pas pu démarrer.") exit() mysock.listen(2) print("Le serveur est démarrer.") continuer = True while continuer : connexion, adresse = mysock.accept() print("Une personne vient de se connecter. IP = {0} | Port = {1}.".format(adresse[0],adresse[1])) launch = serveur(connexion) launch.start() dictio[launch.getName()] = connexion
Client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 import socket import threading class Send(threading.Thread): """docstring for Send""" def __init__(self, arg): threading.Thread.__init__(self) super(Send, self).__init__() self.arg = arg def run(self): continuer = True while continuer : message = input() try : self.arg.send(message.encode("Utf8")) except socket.error : continuer = False break self.arg.close() class Receive(threading.Thread): """docstring for Receive""" def __init__(self, arg): threading.Thread.__init__(self) super(Receive, self).__init__() self.arg = arg def run(self): continuer = True while continuer : try : message = self.arg.recv(1024).decode("Utf8") except socket.error : continuer = False break else : print(">>>>>>> {0}".format(message)) self.arg.close() host = 'localhost' port = 9000 mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try : mysock.connect((host, port)) except socket.error : print("La connexion au serveur est impossible.") exit() print("Connexion au serveur réussi.") continuer = True if __name__ == '__main__' : sn = Send(mysock) rv = Receive(mysock) sn.start() rv.start()
De plus, j'aimerai savoir si possible, comment est-ce que je pourrai faire communiquer le jeu (Module Pygame) avec le serveur (Module socket). Où écrire le "programme" du jeu.
Merci beaucoup à ceux qui souhaitent m'aider, j'espère être assez clair. J'essayerai de répondre au plus vite.
Partager