【问题标题】:How to respond to a http get in native c++ linux如何在本机 c++ linux 中响应 http get
【发布时间】:2014-05-17 06:47:37
【问题描述】:

我对 Linux 的 c++ 编程完全陌生,我想做以下内容;

将处理和回显不正常的 HTTP GET 请求的参数的控制台应用程序。

但我的第一步是;

所以如果打开浏览器并执行一个;

http://192.168.2.10/?yadda=1

在我的 linux 系统 192.168.2.10 上,我会在屏幕上得到回声

New incomming web request parameters: yadda=1

我已经用 .NET 和一个 http 监听器做了几次,但我完全不知道如何在 linux 中用 C++ 做到这一点。

感谢您的帮助!

(没有 netcat,没有 vmware 在 linux 下运行带有 httplistener 的 .net,没有 echo-ing 管道,脚本解决方案,仿真等等,我想知道如何在 linux 下用 C++ 做)

换句话说;

Dim listener As New HttpListener()
listener.Prefixes.Add("http://localhost/")
Dim context As HttpListenerContext = listener.GetContext

在 linux 中使用 C++ 创建二进制可执行文件。一些实际的 c++ 代码行会有所帮助。谢谢

【问题讨论】:

标签: c++ linux


【解决方案1】:

1) 您可以在 Linux 上使用 netcat (nc) 快速连接某些东西,而无需编写任何网络代码。

nc 可以在服务器模式下运行,并且可以将输入/输出通过管道传输到另一个程序,例如 C++ 控制台程序。

2) 您还可以使用 inetd / xinetd 将控制台程序变成网络守护程序。您为特定端口配置您的程序(在 inetd 配置文件中)并完成侦听连接的工作,然后使用伪装为 STDIN/STDOUT 的套接字描述符执行您的 C++ 程序,因此您只需使用标准输入/输出调用.同样,这使您可以编写网络程序,而无需知道套接字。这是一个例子:Linux: How to make a daemon/service usable with xinetd?

我将从选项 2 开始,它可以工作,并且可以在几分钟内完成原型,让您专注于控制台回显功能,然后如果您以后真的需要,您可以重新访问并编写完整的网络守护程序。

3) 我只记得 libcurl (http://curl.haxx.se/libcurl/c/),它运行良好。感谢 Schepurin 在 cmets 中提到它。我在 Linux 上使用过它。它是 C,但您可以用 C++ 包装它,而不是包装 Berkeley API。

除此之外,您将在 Linux 上使用 Berkeley (BSD) / POSIX 套接字 (http://en.wikipedia.org/wiki/Berkeley_sockets) 调用,或者那里可能有一个不错的 C++ 库。如果您愿意,我可以将我的离线发送给您。我知道的最好的书是 W. Richard Stevens 已故的名著,UNIX 网络编程,以及相关的系列。

我只是想我会提出前两个想法,因为你说你不确定从哪里开始使用 C++,它可能会让你更快地开始。

【讨论】:

  • NetCat 不工作,相信我,我已经尝试让它工作一年多了。
  • 我使用 netcat 快速和肮脏的服务器来管道数据,但不记得是否有任何方法可以发出命令和响应模式,所以这就是为什么我建议你尝试 #2 ,或者至少将 netcat 与 C++ 控制台程序结合使用。 #2 已经很成熟了。
猜你喜欢
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 2019-06-27
  • 2019-11-12
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多