1

我有一个基于客户端服务器的 C++ 应用程序,它通过网络(使用 boost asio)进行通信,我计划将此客户端应用程序分发给我的客户。我的问题是我不知道如何阻止来自其他应用程序的连接请求,这就是我如何确保只有我的客户端应用程序能够连接到我的服务器。我认为没有建立连接就没有办法做到这一点,而不是验证请求来自我的客户的最佳方法是什么?

4

2 回答 2

5

您可以使用asio的内置SSL功能。因此,您为每个服务器和客户端生成证书。因此,您可以在 SSL 握手时检查服务器上的客户端证书。作为奖励,您的流量将被加密和 SSL 安全。客户端可以检查服务器是不是假的;服务器可以检查客户端是否被授权。

于 2013-07-06T06:11:34.173 回答
0

是的,您必须接受连接才能知道它是否来自您的应用程序。您可以在连接步骤中使用三次握手:

  1. 客户端连接到服务器 服务器正在向新客户端发送一个特定值(整数、字符串或其他)。
  2. 客户端处理这个值,用它计算一个新值并将新值发送到服务器。
  3. 服务器检查返回值是否正确。

客户端将具有与服务器相同的计算方法。如果返回错误值,其他应用程序将无法使用您的服务。

于 2013-07-03T13:33:29.540 回答