Я пишу параллельный сервер, который должен иметь канал связи и канал данных.
Клиент сначала подключается к каналу связи для проверки подлинности, после успешной проверки подлинности клиент затем подключается к каналу данных для доступа к данным.
Моя программа уже делает это, и я использую потоки. Моя единственная проблема заключается в том, что если я пытаюсь подключиться к другому клиенту, я получаю сообщение об ошибке «невозможно связать: адрес уже используется».
У меня так:
ЧАСТЬ A
Клиент подключается к порту 4567 (и вводит свои данные для входа). Поток создается для обработки клиента (повторяется для каждого подключенного клиента). В созданном потоке у меня есть функция (назовем ее FUNC_A), которая проверяет информацию для входа в систему клиента (не беспокойтесь о том, как выполняется проверка), в случае успеха поток запускает сервер данных (прослушивает 8976), затем отправляет клиенту OK, после получения клиент пытается подключиться к серверу данных.
ЧАСТЬ B
Как только клиент подключается к серверу данных, изнутри FUNC_A клиент принимается, и создается другой поток для обработки соединения клиента с сервером данных (надеюсь, все ясно).
Теперь все это работает нормально. Однако, если я пытаюсь соединиться со вторым клиентом, когда он попадает в ЧАСТЬ B, я получаю сообщение «ошибка связывания: адрес уже используется». Я пробовал так много разных способов, я даже пытался порождать поток, чтобы запустить сервер данных и принять клиента, а затем запустить другой поток для обработки этого соединения. Все еще не повезло.
Пожалуйста, дайте мне предложение относительно того, что я делаю неправильно, как мне поступить, или как лучше всего это реализовать.
Спасибо