Je suis en train de concevoir une application de chat client-serveur en Java. C'est une application sécurisée où les messages sont échangés en utilisant des algorithmes cryptographiques. J'ai un serveur et il peut supporter beaucoup de clients. Mon problème est que lorsqu'un client ouvre une session sur le serveur, cela fonctionne correctement, mais lorsqu'un autre utilisateur se connecte au système, le serveur commence à me donner de mauvaises exceptions de remplissage pour le texte chiffré.Problème de simultanéité en Java
Je ne suis pas capable de comprendre le problème, selon ma logique, quand une nouvelle demande de connexion au serveur est faite, le serveur crée un fil pour l'écoute du client. Est-il possible qu'une fois l'instance de classe de threads créée, elle effectue tout le traitement correctement pour le premier client, mais pas pour le second client car les variables de la classe de thread d'écoute de serveur ont déjà une valeur précédente, et donc le texte crypté pas décrypté correctement?
Veuillez indiquer comment rendre ce processus plus robuste afin que le nombre de clients n'affecte pas le fonctionnement du serveur.
Salut, Le code est comme ceci:
Lorsque Server démarre:
Socket in= serverSocket.accept();
Receive rlt = new Receive(in);
Thread receiveReq = new Thread(rlt);
receiveLoginReq.start();
maintenant Receive thread attend le message entrant et faire le processus selon le type de message. Lorsque plus d'un client est appelé, le serveur fonctionne correctement, le problème démarre lorsqu'un client se termine et tente à nouveau de se reconnecter. Serveur donne toujours l'erreur dans le modèle suivant:
- Première fois le hash pas d'erreur adapté pour la deuxième client
- de javax.crypto.BadPaddingException temps Deuxième: Compte tenu de bloc final pas d'erreur correctement rembourrée
Lorsque cela arrive, j'ai besoin de redémarrer le serveur et redémarrer les deux clients, seulement alors les deux clients fonctionne. mais encore une fois si un client met fin à la connexion et essaie à nouveau de se reconnecter, les mêmes 2 erreurs se produisent de la même manière. puis redémarrez le serveur.
Toute recommandation sera grandement appréciée. Merci
Certains codes iraient de pair en nous permettant de vous aider avec votre problème. –
Le titre ne doit pas sonner "Gestion de la mémoire Java" mais plutôt "problème de simultanéité". Si vous avez fourni un code source plus peut être dit à propos de ce problème. –
Il semble que tous les threads client accèdent aux mêmes données, auquel cas vous devrez probablement utiliser des blocs synchronisés. –