Java读取SWF并输出到浏览器SocketCloseException

时间:2013-12-18 14:29:18

标签: java actionscript-3 sockets

阅读swf的功能,我也将它用于图像,但图像加载好了:

public static InputStream readImage(String file) throws IOException {
    InputStream input = new FileInputStream(file);

        return input;
}

这里输出的最后一个函数是传递输入流:

  public static void writeImage(InputStream input) {

    try
    {
        byte[] buffer = new byte[1024];
        byte[] bytesSend;
        int bytesRead;
        /*
        while ((bytesRead = input.read(buffer)) != -1)
        {
            responseBody.write(buffer, 0, bytesRead);
        }
        */
        IOUtils.copy(input, responseBody);
        responseBody.flush();
        responseBody.close();
    }
    catch(IOException e)
    {
        System.out.println("bbbb");
        e.printStackTrace(System.out);

    }

  }

我尝试同时使用IOUtils.copywhile loop,我收到以下错误:

sun.net.httpserver.StreamClosedException

java.nio.channels.AsynchronousCloseException

SWF文件也有加载的模块,因此有4-5个swf请求..

我正在使用哪种服务器实现?

public void run() {
    try
    {
        InetSocketAddress addr = new InetSocketAddress(8080);
        HttpServer server = HttpServer.create(addr, 0);

        server.createContext("/", new MyHandler());
        server.setExecutor(Executors.newCachedThreadPool());
        server.start();
        System.out.println("Server is listening on port 8080" );
    }
    catch(IOException e)
    {
        System.out.println("Http point error");
        System.out.println(e);
    }

}

也许somone对此有一些想法,如果需要,我可以提供更多信息

1 个答案:

答案 0 :(得分:0)

似乎浏览器决定暂时停止阅读图像文件。

一种可能是您没有在响应中设置正确的内容类型。

另一个原因是你已经安排了浏览器端(例如在你的HTML或Javascript中)在一个没有意义的环境中“获取”SWF文档。