通过Java Socket读取映像文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过Java Socket读取映像文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1180字,纯文字阅读大概需要2分钟。
内容图文
![通过Java Socket读取映像文件](/upload/InfoBanner/zyjiaocheng/708/6d18c5db957f453cb6bd0278cdc93e97.jpg)
这是我到目前为止,
Socket clientSocket = new Socket(HOST, PORT);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
InputStream is = socket.getInputStream();
byte[] byteChunk = new byte[1024];
int c = is.read(byteChunk);
while (c != -1){
buffer.write(byteChunk, 0, c);
c = is.read(byteChunk);
}
BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(buffer.toByteArray()));
我的代码问题是ImageIO.read()返回null.
当我打印ByteArrayOutputStream对象的内容时,我得到的是标题部分
HTTP/1.1 200 OK
Date: Fri, 30 Dec 2011 11:34:19 GMT
Server: Apache/2.2.3 (Debian) ...........
Last-Modified: Tue, 20 Dec 2011 19:12:23 GMT
ETag: "502812-490e-4b48ad8d273c0"
Accept-Ranges: bytes
Content-Length: 18702
Connection: close
Content-Type: image/jpeg
接着是一个空行加上许多不同字符的行,如Àã$sU,e6?Í~á?P;Öã……
我的问题再次是ImageIO.read()函数返回null.
提前致谢.
解决方法:
为什么你不想使用简单的http URL从主机获取图像?
我的意思是:
URL imageURL = new URL("http://host:port/address");
BufferedImage bufferedImage = ImageIO.read(imageURL);
如果要使用普通套接字,则必须解析http响应并手动从http回复中提取数据:读取/跳过标头,读取二进制数据并将其传递给ImageIO.read(或寻找流以纠正位置并将流传递给ImageIO.读).
内容总结
以上是互联网集市为您收集整理的通过Java Socket读取映像文件全部内容,希望文章能够帮你解决通过Java Socket读取映像文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。