Je travaille actuellement sur un outil d'interdiction IP pour les premières versions de Call of Duty 1. (Apparemment, une telle fonctionnalité n'a pas été implémentée dans ces versions). J'ai terminé une application à un seul thread mais cela ne fonctionnera pas assez bien pour plusieurs serveurs, c'est pourquoi j'essaye d'implémenter le threading.Serveurs de relève sur le même port - Threads et Java
Actuellement, chaque serveur a son propre thread. J'ai une classe de réseautage, qui a une méthode; "GetStatus" - cette méthode est synchronisée. Cette méthode utilise DatagramSocket pour communiquer avec le serveur. Comme cette méthode est statique et synchronisée, je ne devrais pas avoir de problèmes et recevoir tout un tas d'exceptions "Adresse déjà utilisée".
Cependant, j'ai une deuxième méthode appelée "SendMessage". Cette méthode est supposée envoyer un message au serveur. Comment puis-je m'assurer que "SendMessage" ne peut pas être invoqué quand il y a déjà un thread dans "GetStatus", et inversement? Si je fais les deux synchronisés, je vais quand même avoir des ennuis si Thread A ouvre une socket sur le port 99999 et appelle "SendMessage" alors que Thread B ouvre une socket sur le même port et appelle "GetStatus"? (Les serveurs de jeu sont généralement hébergés sur les mêmes ports)
Je suppose que je cherche réellement à synchroniser une classe entière, de sorte qu'une seule méthode puisse être appelée et exécutée à la fois par un seul thread.
Espérons que ce que j'essaie d'accomplir/d'éviter est clair dans ce texte.
Toute aide est grandement appréciée.
btw, 99999 n'est pas un port valide - les ports sont des nombres non signés de 16 bits – mdma
À quoi sont-ils synchronisés SendMessage et GetStatus? – Kiril
Port 99999 était juste un exemple, me diriez-vous que "Port XXXXX" n'est pas un port valide aussi si j'avais écrit cela? Qu'en est-il de "Port"? –
John