文件下载android服务器

文件下载android服务器,android,httpresponse,socketserver,Android,Httpresponse,Socketserver,这几天我一直在努力解决这个问题。我想创建一个本地android服务器,让其他设备在LAN中下载文件。到目前为止,我已经创建了一个socket服务器,它在输出流上写一个pdf文件和头文件,但它不工作。当url在网络浏览器上被点击时,几乎95%的数据在下载失败后被毫无问题地下载,这表明网络问题(在谷歌浏览器中) 以下是创建服务器的代码: class VideoStreamServer { public void startServer() { outFilePath = g

这几天我一直在努力解决这个问题。我想创建一个本地android服务器,让其他设备在LAN中下载文件。到目前为止,我已经创建了一个socket服务器,它在输出流上写一个pdf文件和头文件,但它不工作。当url在网络浏览器上被点击时,几乎95%的数据在下载失败后被毫无问题地下载,这表明网络问题(在谷歌浏览器中)

以下是创建服务器的代码:

class VideoStreamServer {

    public void startServer() {
        outFilePath = getActivity().getExternalFilesDir("/") + "/pdf.pdf";
        outFile = new File(outFilePath);
        Runnable videoStreamTask = new Runnable() {
            @Override
            public void run() {
                try {
                    ServerSocket socket = new ServerSocket(port);


                    System.out.println("Waiting for client to connect.");
                    while (true) {
                        Socket client = socket.accept();

                        BufferedOutputStream os = new BufferedOutputStream(client.getOutputStream());
                        FileInputStream in = new FileInputStream(outFile);
                        BufferedInputStream inFromClient = new BufferedInputStream(client.getInputStream());

                        StringBuilder sb = new StringBuilder();
                        sb.append("HTTP/1.1 200 OK\r\n");
                        sb.append("Accept-Ranges: bytes\r\n");
                        sb.append("Connection: close\r\n");
                        sb.append("Content-Length: " + in.available() + "\r\n");
                        sb.append("Content-Disposition: attachment; filename=file.pdf\r\n");
                        sb.append("Content-Type: application/pdf \r\n");
                        sb.append("\r\n");


                        byte[] data = new byte[1024];
                        int length;
                        //inFromClient.read(data);
                        //System.out.println("request from client"+getStreamData(inFromClient));
                        System.out.println("Thread Started");
                        //System.setProperty("http.keepAlive", "false");
                        os.write(sb.toString().getBytes());
                        while ((length = in.read(data)) != -1) {
                            os.write(data, 0, length);
                        }
                        os.close();
                        client.close();
                        socket.close();
                        in.close();
                        break;
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        };

        Thread streamServer = new Thread(videoStreamTask);
        streamServer.start();
    }

}
任何帮助都将不胜感激

EDIT1

 public String getStreamData(InputStream in) {
    StringBuffer buffer = new StringBuffer();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));

    String line;
    try {
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return buffer.toString();
}

您已经有了一个关于同一问题的线程。。你应该在那里报告输入流。同样,你也没有指定错误。在那个线程中,我试图流式传输视频,我一直在努力解决这个问题。然后我想我应该从一个简单的东西pdf(文件)下载开始。我仍然无法使它工作。我不理解您正在使用的输入字符串。我尝试读取输入流,但它也不起作用。我只是想方设法解决我的问题。如果你知道解决方案,请与我分享。我会非常感激的。我需要帮助,伙计。你当时没有报告“INFOROMCLIENT”。为什么不呢?请立即报告并显示完整的代码。那么为什么您仍然没有发布
getStreamDatta()
的代码呢?还有一份关于发生了什么的报告?我给了您一个提示,您应该首先从inputstream中读取。现在就做,解决你的问题!事实上我在办公室,这里没有代码。我在家时会发帖。谢谢你的关注。我会在晚上9点左右做。很抱歉给您带来不便。