如何在Android中创建HTTP服务器?

biq*_*llo 111 android http

我想在Android中创建一个简单的HTTP服务器,为客户端提供一些内容.

有关如何构建服务器或使用任何现有库的任何建议?

dam*_*uar 125

考虑一下:https: //github.com/NanoHttpd/nanohttpd.非常小,用Java编写.我没有任何问题地使用它.

  • 我似乎无法在我的 html 页面中显示图像。应该在 html 中使用哪个目录来显示图像?谢谢。 (2认同)

Pau*_*wke 22

NanoHttpd就像Android上的魅力一样 - 我们在用户手中生成代码,并在其基础上构建.

该许可证绝对允许商业使用NanoHttpd,没有任何"病毒"含义.

  • 我在哪里可以找到如何使用它的教程/示例?例如提供位于设备上的文件,以便其他人可以下载它(或从中流式传输)? (2认同)

h22*_*h22 9

这可以使用ServerSocket完成,与JavaSE相同.这个课程在Android上可用.android.permission.INTERNET是必须的.

唯一比较棘手的部分,你需要一个单独的线程等待ServerSocket,为它的accept方法提供服务的子套接字.您还需要根据需要停止并恢复此线程.最简单的方法似乎是通过关闭ServerSocket来终止等待线程.如果您的活动位于顶层时只需要一台服务器,则启动和停止ServerSocket线程可以优雅地与活动生命周期方法相关联.此外,如果服务器有多个用户,则可以在分叉线程中为请求提供服务.如果只有一个用户,则可能没有必要.

如果您需要告诉用户服务器正在侦听哪个IP,请使用 NetworkInterface .getNetworkInterfaces(),这个问题可能会告诉您额外的技巧.

最后,这里可能有完整的最小Android服务器非常简短,可能比完成的最终用户应用程序更容易理解,在其他答案中推荐.


Dmi*_*y R 6

另一台服务器你可以尝试http://tjws.sf.net,实际上它已经提供了Android启用版本.


ste*_*han 5

如果您使用 kotlin,请考虑这些库。它是为 kotlin 语言构建的。

AndroidHttpServer是一个使用ServerSocket处理http请求的简单demo

https://github.com/weeChanc/AndroidHttpServer

https://github.com/ktorio/ktor

AndroidHttpServer很小,但功能也较少。

Ktor是一个非常好的库,而且使用也很简单