В общем, может быть в будущем поможет.
При включенном шифровании использование смены аккаунтов невозможно.
Скорее всего, неправильно отрабатывает именно эта функция.
Если из клиента делать "MyChat->Выход", то при следующем запуске вход пользователя отрабатывает замечательно (проверено с десяток раз подряд).
Wireshark нам показывает следующее при нормальном функционировании (то есть запускаем клиента с шифрованием и соединение проходит успешно):
Код: Выделить всё172.16.12.51 188.254.55.19 TLSv1.2 361 Client Hello //здоровается с сервером
188.254.55.19 172.16.12.51 TCP 60 2004 → 60170 [ACK] Seq=1 Ack=341 Win=66304 Len=0
188.254.55.19 172.16.12.51 TLSv1.2 589 Server Hello, Certificate, Server Hello Done //сервер отвечает
172.16.12.51 188.254.55.19 TLSv1.2 244 Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message //тут же клиент запрашивает ключ
188.254.55.19 172.16.12.51 TLSv1.2 280 New Session Ticket, Change Cipher Spec, Encrypted Handshake Message // сервер выдает
172.16.12.51 188.254.55.19 TCP 54 60170 → 2004 [ACK] Seq=531 Ack=762 Win=131328 Len=0 //запрос настроек .json
188.254.55.19 172.16.12.51 TLSv1.2 1209 Application Data //а это ответ
172.16.12.51 188.254.55.19 TCP 54 60170 → 2004 [ACK] Seq=531 Ack=1917 Win=132096 Len=0 //тут ходят пакетики
172.16.12.51 188.254.55.19 TLSv1.2 336 Application Data //тут ходят пакетики
188.254.55.19 172.16.12.51 TLSv1.2 93 Application Data //тут ходят пакетики
188.254.55.19 172.16.12.51 TLSv1.2 85 Encrypted Alert
188.254.55.19 172.16.12.51 TCP 60 2004 → 60170 [FIN, ACK] Seq=3870 Ack=1019 Win=65792 Len=0
172.16.12.51 188.254.55.19 TCP 54 60170 → 2004 [ACK] Seq=1019 Ack=3871 Win=131584 Len=0
172.16.12.51 188.254.55.19 TLSv1.2 85 Encrypted Alert
172.16.12.51 188.254.55.19 TCP 54 60170 → 2004 [FIN, ACK] Seq=1050 Ack=3871 Win=131584 Len=0
188.254.55.19 172.16.12.51 TCP 60 2004 → 60170 [RST, ACK] Seq=3871 Ack=1050 Win=0 Len=0
//и в последнем блоке они закончили общение
И если жать выход из клиента - все повторяется также.
А вот если сменить учетную запись общение идет по-другому:
Код: Выделить всё172.16.12.51 188.254.55.19 TLSv1.2 361 Client Hello //клиент здоровается
188.254.55.19 172.16.12.51 TCP 60 2004 → 60362 [ACK] Seq=1 Ack=341 Win=66304 Len=0
188.254.55.19 172.16.12.51 TLSv1.2 589 Server Hello, Certificate, Server Hello Done //сервер тоже
172.16.12.51 188.254.55.19 TCP 54 60362 → 2004 [ACK] Seq=341 Ack=536 Win=131584 Len=0 // а клиент пропускает запрос ключа и сразу делает запрос настроек
188.254.55.19 172.16.12.51 TCP 1180 2004 → 60362 [PSH, ACK] Seq=536 Ack=341 Win=66304 Len=1126 [TCP segment of a reassembled PDU] //ну и сервер ему их и отдает по незашифрованному каналу, потому что ему без разницы как отдавать
172.16.12.51 188.254.55.19 TCP 54 60362 → 2004 [FIN, ACK] Seq=341 Ack=1662 Win=132096 Len=0 //а так как канал нешифрованный, клиент просит заканчивать
188.254.55.19 172.16.12.51 TCP 60 2004 → 60362 [ACK] Seq=1662 Ack=342 Win=66304 Len=0
188.254.55.19 172.16.12.51 TCP 60 2004 → 60362 [FIN, ACK] Seq=1662 Ack=342 Win=66304 Len=0
172.16.12.51 188.254.55.19 TCP 54 60362 → 2004 [ACK] Seq=342 Ack=1663 Win=132096 Len=0
Из всего вышесказанного - видимо, необходимо реализовать смену функцию смены аккаунта (или сервера) через полноценный выход из приложения, так как оно второй раз не хочет создавать шифрованную связь.
И скорее всего где-то рядом и решение проблемы этого топика
viewtopic.php?f=1&t=6500