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