2

我有一个连接到 IP 摄像机并执行 HTTP 请求以获取图像和 M-JPEG 的应用程序。现在没关系,因为我在开发室里有相机。但几周后,cam 将投入生产(它们是非常昂贵的 cam),所以我不会用它们来测试和调试我的应用程序。

我想知道的是“模拟”这些凸轮的最佳方式是什么?目前,我的应用程序正在使用 2 个摄像头,假设它们位于http://192.168.88.1http://192.168.88.2上。我想到了这个:

  1. 在我的应用程序中,我可以将执行 http 调用的函数封装在一个类中,该类可以在发布时执行真正的 http 请求,而在调试时执行伪造。不好的一面是它不会重现真实的东西,比如偶尔的超时和网络流量。
  2. 也许有一个 ip cam 模拟器可以放在我的网络上并使用?
  3. 也许创建真正的 http 请求到我将编程返回假图片的真实服务器?如果是这样,如何进行?

如您所见,我有想法,但我不确定什么是最好的以及人们在做什么。有了您的答案,请考虑到我可能会在相机不在时将其用于单元测试以及正常调试。

谢谢!

4

4 回答 4

2

广告。1:这是单元测试的好方法——你的代码不应该依赖于外部服务器/设备/文件系统。但是您已经看到,这种环境可能过于理想化了。但是,我的目标是将 HTTP 基础架构代码外部化——这将提高您的测试能力和整体架构。

广告。2:没听说过,抱歉。

广告。3:我认为这是最可行的解决方案。如果您曾经使用过 servlet,只需抓住 Tomcat 或 Jetty 并编写一个。然后连接到您的 servletlocalhost:8080/war_name/servlet_name并从中返回您想要的任何内容。是一个简单的例子。

如果您从未听说过 Java servlet 和 servlet 容器 - 仍然值得了解它们。但启动 Sun JDK 中内置的 HTTP 服务器可能会更快,请参阅HttpServer API 和示例

于 2011-11-01T13:19:28.703 回答
1

如果您想要真实图像并可以访问网络摄像头,您可以在您的解决方案中创建一个 ASP.Net 网络服务,该服务可以根据请求从您的网络摄像头中获取照片。当您处于调试模式时,将您的解决方案配置为在 asp.net 开发服务器上启动 Web 服务,这样您就不必配置“真正的”Web 服务器

这是从 c# 获取快照的代码链接它适用于 winforms,但它应该适用于网络服务 http://sites.google.com/site/webcamlibrarydotnet/winfrom-and-csharp-sample-code-and -下载

于 2011-11-01T13:20:01.263 回答
1

我建议使用Sinatra创建一个简单的测试工具。Sinatra 使用起来非常简单,可以用来生成像这样的任何类型的基本 Web 应用程序。

例如,这是一个使用 Sinatra 编写的真实程序:

require 'sinatra'

get '/hi' do
  "Hello World!"
end

这将运行一个简单的网络侦听器,Hello World!如果您点击 URI就会响应/hi

Sinatra 是一个基于 Ruby 的应用程序,如果您了解 Ruby 则最好。如果您不这样做或者您对另一种语言有强烈的偏好,Sinatra 的 Wikipedia 页面列出了 25 多种类似的应用程序,这些应用程序是用各种其他语言编写的,因此您可能可以使用一个选项。

于 2011-11-01T13:25:51.053 回答
0

在 http 服务器中使用 python 构建

# sudo python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 ...
123.123.12.1 - - [12/Feb/2018 11:34:02] "GET / HTTP/1.1" 200 -
于 2018-02-12T11:35:04.573 回答