【问题标题】:Running Netty HttpStaticFileServer example运行 Netty HttpStaticFileServer 示例
【发布时间】:2012-06-23 02:54:24
【问题描述】:
我对在我正在从事的项目中使用 Netty 感到非常兴奋,但我承受着很大的压力来快速跟上进度。我是一名经验丰富的 Java 程序员,但在编写客户端-服务器系统方面没有太多经验。
我正在研究 netty 示例,但发现没有太多关于如何正确运行它们的文档。诚然,通过源代码进行挖掘很有用,但是当我使用 HttpStaticFileServer 时,我已经用这种方法碰壁了。客户端请求可能来自 telnet,但我不知道文件请求本身的格式是什么,我尝试了一些。处理程序编解码器根本不清楚。所以一般来说,如果有一组关于如何运行示例的说明会很好。我保证我会在调试器中观察整个过程,这样我就可以了解到底发生了什么。所以目前,至少,我会欣赏 FileServer 的一个简单示例。我想构建的应用程序将从我怀疑的那个构建。谢谢您的帮助!
【问题讨论】:
-
我也尝试使用浏览器提出请求,选择 URL:127.0.0.1:8080。这给了我一个禁止的 403。对不起....我觉得这是某种入会仪式,我想我失败了。但是一个简单的单行示例真的会有所帮助...
-
我继续使用 HttpUploadServer 并且能够解决这个问题......所以再次作为此示例文档中的建议,请添加 UploadClient 参数示例描述“HTTP://localhost:8080 /c :/test.txt"
标签:
java
netty
fileserver
【解决方案1】:
HttpStaticFileServer 将从您的文件系统提供文件。
参见 HttpStaticFileServerHandler..sanitizeUri()。这是它将您输入浏览器的虚拟路径映射到物理路径的地方。
所以http://localhost:8080/afile.txt 将映射到~/afile.txt。只需将 afile.txt 放在那里,它就会显示在您的浏览器中。
您可能想先尝试Snoop 示例。我在 eclipse 中加载 netty(记得使用 JDK7)并运行/调试示例应用程序。
【解决方案2】:
我使用 Eclipse 在 Windows 上运行 HttpStaticFileServer。
要测试示例,请按照以下简单步骤操作:
- 运行服务器
- 在网络浏览器中输入:localhost:8080/file.ext(将 file.ext 替换为您的文件)
文件应该在System.getProperty("user.dir")
查看答案here
对我来说,它指向 eclipse 工作区目录。所以,ether 使用工作空间或更改HttpStaticFileServerHandler 中的sanitizeUri(String uri) 方法以返回:
rootPath + File.separator + uri;
而不是
return System.getProperty("user.dir") + File.separator + uri;
其中 rootPath 是文件服务器根目录的路径。