У меня есть клиентское приложение на языке c ++, которое обменивается данными по сети (с boost asio), и я планирую распространить это клиентское приложение среди своих клиентов. Моя проблема в том, что я не знаю, как предотвратить запрос соединения от других приложений, то есть как я могу убедиться, что только мое клиентское приложение может подключиться к моему серверу. Я думаю, что нет способа сделать это без установления соединения, чем лучший способ проверить, что запрос поступил от моего клиента?
Ты можешь использовать ASIOвстроенный SSL способность. Итак, вы генерируете сертификаты для каждого сервера и клиентские сертификаты. Таким образом, вы можете проверить клиентский сертификат на сервере в момент подтверждения SSL. В качестве бонуса ваш трафик будет зашифрован и защищен SSL. Клиенты могут проверить сервер не подделка; Сервер может проверить, авторизованы ли клиенты.
Да, вы должны принять соединение, чтобы узнать, из вашего приложения или нет.
Вы можете использовать трехстороннее рукопожатие на этапе подключения:
У клиента будет тот же метод вычисления, что и у сервера. Другие приложения не смогут использовать ваш сервис, если они вернули неверное значение.