【发布时间】:2013-01-10 14:22:41
【问题描述】:
我正在制作一个服务器,它可以获取 64 kb 大小的包。
int length = 65536;
byte[] bytes = new byte[length];
int pos = 0;
while(pos < length -1)
{
System.out.println("Before read");
pos += dis.read(bytes, pos, length-pos);
System.out.println(""+pos+" >> "+ length);
}
这是我用来从套接字读取所有字节的代码。 Dis 是 InputStream。
当我运行 n 中的代码 1 时出错。该代码仅接收 52964 字节而不是 65536 字节。
我还检查了 C 代码,它说它发送 65536 字节。
有人知道我做错了吗?
【问题讨论】:
-
你有发送方代码吗?
-
我不明白这是怎么发生的,因为我认为你没有得到
-1的 EOF。你得到了什么,一个例外? -
你设置了socket的接收缓冲区大小吗?
-
不是主要问题,但您的循环跳过了最后一个字节,请使用
while(pos < length)