gpt4 book ai didi

java 。 BufferedInputStream 处理图像

转载 作者:行者123 更新时间:2023-12-01 04:22:40 27 4
gpt4 key购买 nike

我正在尝试用java编写服务器端和客户端。因此,客户端发送请求,如 GET/HTTP/1.0,服务器端响应(如果文件存在),如 HTTP/1.0 200 OK,放入 header 内容类型和内容长度,并将来自 FileInputStream 的流写入 BufferedOuputStream。服务器端:

String endLine = "\r\n";
File f = new File(fileName);
FileInputStream fstream;
fstream = new FileInputStream(f);
response = "HTTP/1.0 200 OK" + endLine;
header = "Content-type: "+ contentType + endLine + "Content-length: " + f.length() + endLine + endLine;
bout.write(response.getBytes());
bout.write(header.getBytes());
int lol;
while((lol = fstream.read(buffer)) != -1) {
bout.write(buffer,0,lol);
}
System.out.println("Message sent");
bout.flush();
socket.close();

客户端:

byte[] res = new byte[bufferSize];
int got;
int i=0;
int temp = 0;
int j = 0;
while((got = bis.read(res))!=-1){
for(j=0;j<res.length;j++){
//dividing from header
if(res[j]=='\n'&&res[j-1]=='\r'&&res[j-2]=='\n'&&res[j-3]=='\r'){
temp = j+1;
}
}
fout.write(res,temp,got-temp);
i++;

}

所以,对于 .html 文件它工作得很好,但是对于图像...... Server side image

What do I have on client side

找到了解决方案。错误发生在偏移量上:

fout.write(res,temp,got-temp);

该行在每次迭代时添加偏移量。我只需要首先:

if(i==0){
fout.write(res,temp,got-temp);
}else{
fout.write(res,0,got);
}

最佳答案

在传输二进制数据时,您不应该解析检查换行符等内容,您的图片也包含这些\n r 字符

关于 java 。 BufferedInputStream 处理图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18782813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com