Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将图像从java套接字服务器发送到导航器而不被损坏?_Java_Serversocket_Navigator_Dataoutputstream - Fatal编程技术网

如何将图像从java套接字服务器发送到导航器而不被损坏?

如何将图像从java套接字服务器发送到导航器而不被损坏?,java,serversocket,navigator,dataoutputstream,Java,Serversocket,Navigator,Dataoutputstream,我正在尝试编写一个java套接字服务器代码,以便将图像从该服务器发送到导航器(客户端)。但是,当我发送图像时,会发现文件已损坏(用符号显示图像) 谢谢你的帮助 我解决了这个问题。 首先,删除dout.readInt(); 然后,打开微软edge;(mozilla显示了图像,但似乎存在编码问题,这是我的观点,可能不是真的) 尝试直接使用OutputStream来编写文件,而不是DataOutputStream。DataOutputStream写入格式化的二进制数据,而OutputStream写入原

我正在尝试编写一个java套接字服务器代码,以便将图像从该服务器发送到导航器(客户端)。但是,当我发送图像时,会发现文件已损坏(用符号显示图像)

谢谢你的帮助

我解决了这个问题。 首先,删除dout.readInt();
然后,打开微软edge;(mozilla显示了图像,但似乎存在编码问题,这是我的观点,可能不是真的)

尝试直接使用OutputStream来编写文件,而不是DataOutputStream。DataOutputStream写入格式化的二进制数据,而OutputStream写入原始数据。我更改为OutputStream dout=new DataOutputStream(连接…),但它没有更改任何内容。如果没有错误,我无法更改第二个DataOutputStream。为什么要发送大小字?为什么不发送任何HTTP头?@Thecarisma
DataOutputStream
不会更改写入的内容。你的建议没有任何区别,也没有任何意义。哦,糟糕,我先看错了问题,然后删除
dout.writeInt()
。没有其他需要。
                DataOutputStream dout = new DataOutputStream(connectS.getOutputStream());
                String file="image.jpg";
                File filename = new File(file);
                FileInputStream fin = new FileInputStream(filename);  
                //dout.writeUTF(file);
                System.out.println("Sending image...");
                int size=(int) filename.length();
                byte[] readData = new byte[size]; 
                fin.read(readData);
                dout.writeInt(size);
                dout.flush();
                dout.write(readData,0,size);
                /*for(int i=0;i<readData.length;i++) {
                     dout.write(readData, 0, i);
                }*/
                dout.flush();
    ServerSocket ss=new ServerSocket(8080);
    Socket connectS=ss.accept();
    BufferedReader in=new BufferedReader(new InputStreamReader(connectS.getInputStream()));