首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于Socket接收二进制流的字节数不一致的有关问题?(急)

2012-01-14 
关于Socket接收二进制流的字节数不一致的问题?(急!!!)各位大侠:我从server端接收二进制的流文件,然后写到

关于Socket接收二进制流的字节数不一致的问题?(急!!!)
各位大侠:

我从server端接收二进制的流文件,然后写到文件中去。确认网络和数据没有问题,本来是512个字节,可怎么一直接收的长度不对,有时503、504、510等。

请教具体的接收算法和写文件的方法,解决立即给分,在线等待。

[解决办法]
服务器端最后flush了吗?
[解决办法]
冒似听说过类似问题,帮顶一下。
[解决办法]
要flush的哦
[解决办法]
tcp/ip栈的问题,建议你先写一个临时文件,或者读取固定的字节数(可以考虑循环读)
[解决办法]
服务器端可能没有传完吧
[解决办法]
楼主说的“503、504、510等”长度是不是指生成的文件的长度?

如果是的话,那请你注意了,很可能是二进制流中出现的 0D 0A 在文件中被写成了 0A。如果你的接收端程序是在 Linux 上的话,可能性就更大了……
[解决办法]
你是不是建了一个byte数组,然后读入再发送的吧??
我以前也是这样,不过不影响文件运行,
你可以一个个字节的读,
用BufferedInputStream read();
例如:
int data;
   while((data=bin.read()) != -1)
{
// Socket发送
}
    // DataOutputStream包装Socket
发送一个文件结束标志,
int endFile = -1;
例如: writeInt(endFile);
另一端利用DataInputStream包装Socket来接收
         int endFile = readInt();

大概思路就这样,参考下

热点排行