标签: nanohttpd

Android http服务器无法间歇性地从网络上的其他设备访问

我正在使用NanoHTTPD在Android应用程序中呈现Web服务器.我正在使用wifi锁来保持网络活跃,并使用CPU锁定以保持CPU清醒,并通过前台服务保持其运行,以便它永远不会死亡.

我发现它可以从其他设备访问半小时,然后半小时无法访问.每当它变得无法访问时,我可以在Android设备上打开safari并浏览到0.0.0.0:30000并验证服务器确实在运行.我也检查确保wifi连接似乎是.

有什么建议去哪儿看?

service android nanohttpd

32
推荐指数
1
解决办法
672
查看次数

在Android中使用NanoHTTPD

我正在尝试使用NanoHTTP来提供HTML文件.然而,NanoHTTP相对来说没有记录,我是Android新手.我的问题是,我在哪里存储html文件,以及我如何使用NanoHTTP提供服务.

android http file nanohttpd

29
推荐指数
4
解决办法
3万
查看次数

如何使用NanoHTTPD在SD卡上提供文件(在Android内部)

我用NanoHTTPD编写了一个小型的Android服务器.它可以很好地提供HTML文件(位于sdcard/www/index.html的网页).任何人都可以帮我找出如何使用NanoHTTPD提供音频或视频文件而不是html页面?请原谅我这个问题看起来很傻,因为我是HTTP的新手!这是我的服务器端代码(我已将网页路径替换为音频文件的路径):

package com.example.zserver;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;

public class MainActivity extends Activity {

    private WebServer server;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        server = new WebServer();
        try {
            server.start();
        } catch(IOException ioe) {
            Log.w("Httpd", "The server could not start.");
        }
        Log.w("Httpd", "Web server initialized.");

    }
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        if (server != null)
            server.stop();
    }

    private class WebServer extends NanoHTTPD {

        public …
Run Code Online (Sandbox Code Playgroud)

android http nanohttpd

18
推荐指数
1
解决办法
2万
查看次数

在NanoHTTPD中检索HTTP正文

我怎样才能检索HTTP POST执行时要求身体NanoHTTPD小号serve的方法?

我已经尝试使用已经的getInputStream()方法IHTTPSession,但我总是得到一个SocketTimeoutException在方法中使用它serve.

java nanohttpd

18
推荐指数
3
解决办法
1万
查看次数

NanoHttpd服务器无法在android上传输大型视频

NanoHttpd服务器代码可以在这里找到.

我正在使用NanoHttpd服务器来传输大型视频(大约150mb)的服务中启动一个新线程,但它只是在显示加载对话框时暂停.我尝试增加和减少缓冲区读取无济于事.似乎服务器无法在Android设备上正常运行.

当我通过桌面应用程序启动服务器时,相同的代码工作正常 我的流量超过150mb.从手机运行服务器时,我只尝试了20mb文件,它们也很好.但是,我需要流式传输更多.

java memory streaming android nanohttpd

11
推荐指数
3
解决办法
6744
查看次数

如何使用NanoHTTPD在Android中一次下载两个或多个文件?

我在我的Android应用程序中使用NanoHTTPD作为Web服务器.

我将两个文件名从客户端浏览器传递给NanoHTTPD服务器,我希望一次下载这两个文件,但下面的代码只下载file1,而不下载file2.

如何一次下载两个或多个文件?

public class MyWebServer extends NanoHTTPD
{

    private final String rootDir;

    public MyWebServer(int port, String rootDir)
    {
        super("192.168.1.4", port);
        this.rootDir = rootDir;
    }

    @Override
    public Response serve(IHTTPSession session)
    {       
        Map<String, String> parms = session.getParms();

        String filename1=GetFilename(parms);
        String filename2=GetFilename(parms);

        File file1 = new File(rootDir + filename1);
        File file2 = new File(rootDir + filename2);

        return downloadFile(file1);
        return downloadFile(file2);
    }


    private Response downloadFile(File file)
    {
        FileInputStream fis = null;
        try
        {
            fis = new FileInputStream(file);
        } catch (FileNotFoundException ex)
        {
            Logger.getLogger(MyWebServer.class.getName()).log(Level.SEVERE, …
Run Code Online (Sandbox Code Playgroud)

android nanohttpd

9
推荐指数
1
解决办法
1347
查看次数

Android Http服务器和破碎的管道

我正在尝试开发一个Android UPnP应用程序,其中包含一个嵌入式http服务器,因此它可以通过局域网从设备提供媒体文件.

我使用的Web服务器的第一个实现基于来自Apache HttpCore的ElementalHttpServer示例http://hc.apache.org/httpcomponents-core-ga/index.html.它必须稍微更改一下,因为Android库中已包含的org.apache.http元素与httpCore jar中包含的最新元素不同.

我试图用jar中的那些替换那些来自jar的那些但是无法完成 - 安卓库中的那些优先级.当我更改库顺序时,重复的类有问题.

而不是罐子,我包括源代码和更改数据包名称,以避免重复的类问题.

管道损坏和连接问题仍然存在问题.

我也尝试过来自HttpCoreNIO的NHttpServer,因为它具有与基本httpCore不同的类集,可以包含和使用,而不会与Android本身的httpCore冲突.

然后我使用了NanoHTTPD,这似乎是所有http服务器中最好的,但它仍然受到与其他所有服务器相​​同的问题的困扰:

java.net.SocketException: The connection was reset
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStreamImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStream(OSNetworkSystem.java:498)
at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:585)
at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:59)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.sendResponse(NanoHTTPD.java:828)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:478)
at java.lang.Thread.run(Thread.java:1096)
Run Code Online (Sandbox Code Playgroud)

java.net.SocketException: Broken pipe
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStreamImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStream(OSNetworkSystem.java:498)
at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:585)
at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:59)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.sendResponse(NanoHTTPD.java:828)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:478)
at java.lang.Thread.run(Thread.java:1096)
Run Code Online (Sandbox Code Playgroud)

最近我已经在应用程序中实现了iJetty,但问题仍然存在.有时请求设备进入无限循环的请求.

我能做错什么?标题可能有问题吗?

sockets android upnp nanohttpd

7
推荐指数
1
解决办法
1641
查看次数

存储,转换为视频流Android屏幕

我使用DDMS从我的Android手机获取屏幕截图,我需要一种有效的方式来转换视频并通过网络传输视频.

我有一个RawImage,其中填充了屏幕截图的数据:

RawImage mRawImage;
Run Code Online (Sandbox Code Playgroud)

直到知道我使用SWT创建图像并保存它:

PaletteData paletteData = new PaletteData(
    mRawImage.getRedMask(),
    mRawImage.getGreenMask(),
    mRawImage.getBlueMask());

ImageData imageData = new ImageData(
    mRawImage.width,
    mRawImage.height,
    mRawImage.bpp,
    paletteData,
    1,
    mRawImage.data);

ImageLoader s = new ImageLoader();
s.data = new ImageData[] {imageData};
s.save("temp.jpg",SWT.IMAGE_JPEG);
Run Code Online (Sandbox Code Playgroud)
  • 你能提出一种方法将这些图像序列转换为视频,然后流式传输视频吗?

我发现NanoHTTPD可用于流媒体,但我如何将图像转换并压缩为视频?

  • 你相信我可以用ffmpeg做到吗?

我找到了一个很好的教程,用于使用FFMPEG和video4linux2.

是否可以bytesRawImageFFMPEG发送转换为实时视频流?

实际代码:

$ffmpeg -f video4linux2 -i /dev/video0 http://78.47.18.19:8090/cam1.ffm
Run Code Online (Sandbox Code Playgroud)

将其替换为类似于:

$ffmpeg -f video4linux2 -i **<add here java stream>** http://78.47.18.19:8090/cam1.ffm
Run Code Online (Sandbox Code Playgroud)

有什么建议?

谢谢

PS:我期待一种解决方案,它可以帮助我将图像转换为压缩视频,然后通过网络传输视频,以便使用HTML5或Flash Player播放

java android ddms nanohttpd

7
推荐指数
1
解决办法
1440
查看次数

为什么RMI注册表忽略了java.rmi.server.codebase属性

我正在运行java RMI的Hello World示例

1)我在一个空文件夹中运行注册表

motta@motta-laptop ~/tmp $ rmiregistry
Run Code Online (Sandbox Code Playgroud)

2)我启动HTTP服务器以在运行时检索类.download文件夹包含客户端 - 服务器的远程接口

motta@motta-laptop ~/download $ java NanoHTTPD 8080
Run Code Online (Sandbox Code Playgroud)

3)我按照java RMI教程的建议启动服务器传递java.rmi.server.codebase属性

motta@motta-laptop ~/server $ java -Djava.rmi.server.codebase="http://localhost:8080" WarehouseServer
Run Code Online (Sandbox Code Playgroud)

RMI注册表未联系HTTP服务器并且抛出异常(请参阅问题后的详细​​信息). 但如果我做以下事情

1)使用java.rmi.server.codebase属性启动rmi注册表

motta@motta-laptop ~/tmp $ rmiregistry -J-Djava.rmi.server.codebase="http://localhost:8080/"
Run Code Online (Sandbox Code Playgroud)

2)像以前一样启动HTTP服务器

3)没有任何选项启动服务器

motta@motta-laptop ~/server $ java WarehouseServer
Run Code Online (Sandbox Code Playgroud)

它有效,但为什么呢?似乎在第一个过程中,RMI注册表忽略了java.rmi.server.codebase属性

谢谢

=================================

我在跑步

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)

RMI注册表的例外

Constructing server implementation...
Binding server implementation to registry...
Exception in thread "main" java.rmi.ServerException: RemoteException occurred in …
Run Code Online (Sandbox Code Playgroud)

java rmi rmiregistry nanohttpd

7
推荐指数
1
解决办法
1万
查看次数

读取NANOHTTPD的InputStream会产生Socket TimeOut异常

我试图使用以下代码从IHTTPSession.getInputStream()读取InputStream,但每次都给出Socket TimeOut异常.

private String readInStream(InputStream in){

        StringBuffer outBuffer=new StringBuffer();
        BufferedInputStream bis=new BufferedInputStream(in);
        try {
            while(bis.available()>0){
                int ch= bis.read();
                outBuffer.append((char)ch);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Log.e("DATA_Length", "outputBuffer :"+outBuffer.toString().length());
        return outBuffer.toString();
    }
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下方法,但出现了同样的异常

private String readInStream(InputStream in){
        String line="";
        StringBuffer outBuffer=new StringBuffer();

        BufferedReader rd=new BufferedReader(new InputStreamReader(in));

        try {
            while((line=rd.readLine()) != null){
                outBuffer.append(line);
            }
        } catch (IOException e) {
            Log.e("IOException", "IOException in readInStream:");
            e.printStackTrace();
        }

        Log.e("DATA_Length", "outputBuffer :"+outBuffer.toString().length());
        return outBuffer.toString();
    }
Run Code Online (Sandbox Code Playgroud)

inputstream bufferedinputstream bufferedreader nanohttpd

7
推荐指数
1
解决办法
866
查看次数