0

我创建了服务器程序,它将向客户端发送图像文件。如果图像是 512 字节,我的程序可以正常工作。但它确实适用于大文件。

在这种情况下,我没有得到我应该得到的确切图像。意味着我恢复的图像以某种不正确的方式出现。那么如何解决这个问题

我在服务器中使用 java 套接字通道和 java nio,而在客户端使用简单套接字。

谢谢苏尼尔

4

2 回答 2

1

这是你的错误:

while(fileChannel.read(buffer)>0)

read()方法不一定会填充缓冲区;它将读取任意数量的字节并返回该数字。您必须允许它读取的内容少于缓冲区的容量并且只写入那么多字节,这也是必要的,因为文件大小不一定是缓冲区大小的倍数,并且最后一次读取几乎永远不会完全填满缓冲区.

在客户端也是如此 -available()在这里没有用,你必须简单地阅读然后处理你得到的任何字节。

于 2009-07-01T10:24:53.680 回答
0

我没有看到您在客户端刷新和关闭输出流。当你爆发时,你应该 close() 输出流,并且任何缓存的数据都将被写出到文件中。

于 2009-07-01T10:25:27.687 回答