通过Internet在c ++中的客户端服务器应用程序

时间:2014-09-07 04:41:22

标签: c++ client-server

我想通过不同的计算机(通过互联网)访问c ++应用程序.c ++应用程序将连接到数据库。我已经知道这样做的不同方法(如果我没有错) -

  • 在c ++程序中运行http服务器
  • 插座
  • 套接字程序作为Web服务器。
  • 使用tcp / ip

什么能适合我的目的。

2 个答案:

答案 0 :(得分:2)

首先,您应该查看OSI模型以了解这些“选项”的位置,因为您似乎对它们的含义感到困惑。

首先,套接字只是处理连接,任何连接的编程方式。因此,从软件的角度来看,这不是一个“选项”,因为它只是任何网络连接的通用术语。这使你的“选项2”基本没有意义。

其次,互联网上几乎所有内容的传输协议都是TCP / IP。唯一的另一个通用选项是UDP / IP,对于大多数任务来说这是不够可靠的(主要是针对本地封闭网络上的特定高带宽任务)。当然,在OSI模型级别上仍然相当低,即,它不是您问题的解决方案,因为您的问题处于最高OSI级别,即“应用程序”级别。所以,这使得你的“选项4”也毫无意义(它太低级,好像有人问“我如何建房子?”而你回答“使用锤子。”)。

第三,http服务器只是众多Web服务器中的一种。而Web服务器实际上只是一个侦听客户端连接的程序(来自Web)。因此,显然,您需要创建一个Web服务器,因为这就是您自己所说的,即创建可以从Internet上的其他计算机访问的C ++应用程序:我们将其称为Web服务器。所以,这也使你的“选项3”变得毫无意义,因为它只是重复你的问题陈述,而不是解决它。

因此,您真正应该关注的是确定哪些应用程序级协议可以使用或可以创建适合您的预期应用程序。

像HTTP这样的成熟协议同时也是一种祝福和诅咒。它们非常复杂,因此很难理解,更不用说正确实现了。因此,您可能会选择一个现成的库来处理该协议,但这可能是一个重要的(和大而复杂的)依赖项,以引入您的项目。但是,您确实可以获得更强大的协议,同时还可以轻松集成安全性(例如,HTTPS)。您可能希望查看HTSQL以获取特定于数据库的数据库协议。

另一种选择是创建自己的自定义和简单协议。如果您的任务非常简单,则不需要非常复杂。例如,如果你想做的就是中继数据库查询,那么你的协议就像只包含SQL查询一样简单。

最后,还有许多库实现了所谓的RPC(Remote Procedure Call),这是一种无缝调用由另一台计算机上的另一个程序执行的函数的方法(例如,服务器)。这允许您从方程式中删除协议,因为它由RPC库完成。在服务器应用程序上,您只需发布要公开的函数,在客户端,您只需与服务器建立连接并像调用任何其他正常函数一样调用函数。

我想说这些是你的三个主要选择:使用现有的通用协议,如HTTP;创建自己的简单协议;或者,使用RPC(或类似)库。选择哪个选项实际上取决于您需要在客户端和服务器之间完成的特定任务的详细信息。

答案 1 :(得分:0)

Boost,Qt,另一个图书馆。每个都实现自己的tcp / ip,套接字等方法。比较和选择。当然,你必须自己实现http例程。