java 用socket 实现文件上传,在自己电脑测试可以实现上传,就是把文件传到一个文件夹下,模拟上传。但是在另一台电脑上传到一半就卡在那,比如上传到34.56%,56.78%就停在那,我程序中文件上传会显示上传进度。有什么原因会引起在别的电脑不能上传,都是相同的代码,端口都一样。。有可能是端口的原因吗?哪位高手帮我解答下。。注:上传的文件是同一个文件,在别的电脑一次都没成功,每次出现都是相同的问题,就是文件上传进度百分比不一样。在自己的电脑一下子就上传完毕的分数只有20分了,请大家不要嫌弃关键代码:
while (true) {
int read = inputStream.read(b);
if (read == -1) {
break;
}
fileOutputStream.write(b, 0, read);  log.info("文件已经接收:"+ format.format(((double) file.length() / length) * 100)+ "%");
if (((double) file.length() / length) * 100 == 100.00) {
double end = new Date().getTime();
log.info("文件消耗时间:" + (end - stat) / 1000);
fileOutputStream.flush();
fileOutputStream.close();
}
}

解决方案 »

  1.   

    端口号是多少,可能是端口号没有开通,以前我写网络编程也遇到过这种,后面是端口号没有开通,开通方式:
    控制面板上- windows防火墙-高级设置-入站规则-增加规则-端口    希望对你有用!
      

  2.   

    ((double) file.length() / length) * 100这个结果是小数点后有两位的double吗?
      

  3.   

    #1:端口开通的,是8899,因为是公司的项目,部署到别省的服务器上,那个端口要申请开通过,能telent通,而且那台服务器windows 防火墙都没打开。。还有一个疑问,就是我自己的电脑socket 用的是同一个端口,但是telnet 不通,还是能上传文件#2:((double) file.length() / length) * 100 是小数点两位数,如34.56%