客户端服务器在互联网上的应用

client server application in c++ over internet

本文关键字:应用 互联网 服务器 客户端      更新时间:2023-10-16

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

  • 在c++程序中运行http服务器
  • 插座
  • socket程序作为web服务器
  • 使用tcp/ip

什么能符合我的目的。

首先,您可能应该查找OSI模型来了解这些"选项"的位置,因为您似乎对它们是什么感到困惑。

首先,套接字只是处理连接、任何连接的编程方式。因此,这并不是一个真正的"选项",因为从软件的角度来看,这只是任何网络连接的通用术语。这使得你的"选项2"基本上毫无意义。

其次,互联网上几乎所有东西的传输协议都是TCP/IP。唯一的另一个通用选项是UDP/IP,它对大多数任务来说不够可靠(大多只适用于本地封闭网络上的特定高带宽任务)。当然,这在OSI模型级别上仍然很低,也就是说,它不是你问题的解决方案,因为你的问题处于最高的OSI级别,即"应用程序"级别。所以,这也让你的"选项4"变得毫无意义(它太低级了,就好像有人问"我该怎么盖房子?"而你回答"用锤子。")

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

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

像HTTP这样的成熟协议是福也是祸。它们非常复杂,因此很难理解,更不用说正确实现了。因此,您可能会选择现成的库来处理该协议,但这可能是一个重要的(且庞大而复杂的)依赖项,需要引入到您的项目中。但是,您确实可以从一个更健壮的协议中获益,该协议还可以轻松集成安全性(例如HTTPS)。您可能希望查看HTSQL,了解特定于数据库的基于HTTP的协议。

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

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

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

Boost,Qt,其他库。每种方法都实现了自己的tcp/ip、套接字等方法。比较并选择。当然,您必须自己实现http例程。