Я разрабатываю клиент-серверное приложение для чата на Java. Это безопасное приложение, где сообщения обмениваются с использованием криптографических алгоритмов. У меня есть один сервер, и он может поддерживать много клиентов. Моя проблема в том, что когда один клиент входит на сервер, он работает нормально, но когда другой пользователь входит в систему, сервер начинает выдавать мне исключения из-за неправильного заполнения для зашифрованного текста.
Я не могу выяснить проблему, согласно моей логике, когда новый запрос на соединение с сервером сделан, сервер создает поток для прослушивания клиента. Возможно ли, что после создания экземпляра класса потока он выполняет всю обработку правильно для первого клиента, но не для второго клиента, поскольку переменные в классе потока прослушивателя сервера уже имеют некоторое предыдущее значение, и, таким образом, зашифрованный текст не расшифрован правильно?
Посоветуйте, пожалуйста, как я могу сделать этот процесс более надежным, чтобы количество клиентов не влияло на эффективность работы сервера.
Привет, код такой:
Когда сервер запускается:
Socket in= serverSocket.accept();
Receive rlt = new Receive(in);
Thread receiveReq = new Thread(rlt);
receiveLoginReq.start();
теперь поток получения ожидает входящее сообщение и выполняет процесс в соответствии с типом сообщения. Когда вызывается более одного клиента, сервер работает нормально, проблема начинается, когда один клиент завершает работу, а затем снова пытается восстановить соединение. Сервер всегда выдает ошибку в следующем порядке:
- В первый раз ошибка HAsh не совпадает для второго клиента
- Второй раз javax.crypto.BadPaddingException: ошибка в последнем блоке, неправильно заполненная
Когда это происходит, мне нужно перезапустить сервер и перезапустить оба клиента, только тогда оба клиента работают. но опять же, если один клиент прерывает соединение и снова пытается восстановить соединение, те же самые 2 ошибки происходят таким же образом. а затем снова перезапустите сервер.
Любой совет будет высоко оценен.
Спасибо