实现许可管理服务器

时间:2013-03-11 10:24:40

标签: c++ client-server communication

我想实现许可管理软件的服务器端。我在LINUX OS中使用C ++。

当软件启动时,它必须连接到检查权限的服务器,并允许/禁止运行某些功能。

我的问题是关于在互联网上实现客户端和服务器之间的通信:

服务器将在Internet上具有静态IP,因此是否足以使用将连接到TCP / IP套接字服务器(提供IP / PORT)的简单TCP / IP套接字客户端?

我熟悉套接字通信,但对互联网通信较少,所以我的问题是这是正确的方法还是我需要使用不同的机制,如http客户端服务器或其他。

此致

AFG

2 个答案:

答案 0 :(得分:1)

使用HTTP作为传输有以下好处:

  • 更容易做对,更有可能在生产中工作:是的,您可能需要添加其他依赖项来处理HTTP(客户端和服务器端),但它仍然比另一个更好本地协议,你必须实现,维护,关注向后兼容性,处理多平台问题(例如字节序)等。在实现方便性方面,在常见情况下使用基于HTTP的解决方案应该更容易(特别是真的如果您为许可证检查构建REST样式服务API。)
  • 提供更多帮助:HTTP作为网络的基础是当今使用最广泛的技术之一。您遇到的大多数(全部?)问题可能都是公开记录的解决方案/解决方法。
  • 加密'免费':加密已经解决了问题(HTTPS / SSL),无论是在传输方面,还是在你必须实现的目标方面,它都是只是设置它。
  • 服务器身份验证'免费':HTTPS / SSL不仅解决加密问题,还解决服务器身份验证问题,以便客户端可以验证它是否真正与正确的服务进行通信。
  • 保证在互联网上工作:HTTP / HTTPS流量在互联网上很常见,因此您不会遇到难以遍历的路由问题或防火墙。使用自己的协议时可能会出现问题。
  • 开箱即用的灵活性:您还可以减少与服务器通信的客户端的限制,因为在许多不同的环境中构建客户端非常简单,只要他们可以通话HTTP(和也许是SSL),他们知道如何向您的服务器发出请求(即您的服务API看起来像什么)。
  • 易于与管理网络应用集成:如果您希望允许用户以某种方式管理与许可相关联的帐户(更新联系信息等),那么您甚至可以将许可服务器与那个申请。如果有用,您还可以将许可证管理UI部件构建到同一个应用程序中。

作为最后一句话(这会给客户端HTTPS / SSL实施带来额外的限制):您甚至可以使用客户端SSL证书,它实质上允许向服务器验证客户端。根据您使用它们的方式,客户端证书更难管理,但它们可以是例如。已过期或已撤销,因此在某种程度上,他们实际上许可证(连接到服务器)。

答案 1 :(得分:0)

  • HTTP不是一种不同的机制。它是通过TCP / IP连接运行的协议。
  • Internet仅使用IP传输。您可以在其上使用UDP,TCP或SCTP会话(以及UDP不是一个会话)层。 TCP是一般选择。
  • 套接字是操作系统接口。它们是大多数系统中唯一的网络接口,但有些系统具有不同的接口。与运输本身无关。
  • IP地址实际上与网络拓扑有关,因此我强烈反对将IP地址硬编码到服务器中。如果您因任何原因必须更改网络提供商,则不会获得相同的IP地址。使用DNS,只需一次gethostbyname电话。
  • 不要忘记验证服务器;即使使用硬编码的IP,也很容易重定向。