在两台机器间传输的话,除了txt文档,其余的所有都是文件传过去了,但是打开失败(不论文件大小)。好像在传输过程中文件损坏了......
    在一台机器上没这个问题,所有文件不论大小都能传递过去,都能正常打开。
    请问各位究竟是哪出问题了?可以的话请解释的详细些,本人是菜鸟,论坛上许多解释看的不是很明白。
    下面是我的程序:
http://blog.csdn.net/thdgytyi/archive/2008/12/15/3519213.aspx
抱歉,程序太长,只能放到BLOG中了。

解决方案 »

  1.   

      byte[] b = new byte[1024]; 
      int i = 0;  
      while (in.read(b) != -1) { 
      fileout.write(b);
      } 
    可能出现读取的字节数不够1024的情况,那么写入文件的时候就会把后面多余的部分也写入文件。改成:byte[] b = new byte[1024];
    while(true) {
    int readed = in.read(b);
    if(readed == -1) {
    break;
    }
    fileout.write(b, 0, readed);
    }
      

  2.   

    似乎还是不行,在传递EXE这种可执行文件时还是无法打开。
      

  3.   

    但有些exe的可执行文件传输后无法打开,例如电子书
      

  4.   

    我试了下把服务器的conn.close();及客户端的client.close();但似乎没有变化......
      

  5.   

    文件传输完后把socket关了看看
      

  6.   

    怀疑硬件之前首先要怀疑自己,绝大部分是自己代码的问题。
    要把文件拿到一起比较一下,看你的程序在哪里出了问题。
    二进制读写不牵扯到解码问题,主要还是要看每次读写的数据是否一致,
    最主要是要分析文件最后一次读写。
    while (filein.read(b) != -1) {
      outputToSocket.write(b);
      }
    这个地方也是有问题的,如果读到的不是1024,仍然写了1024,当然也有问题。和socket
    读的地方是一样的。
      

  7.   

    多谢大家,问题解决了。
    就像2楼所说,应该改一下,
    同时应该设置一下,把socket给关了,在客户端和服务器分别添加conn.close()和client.close()
    刚开始编写程序,不成熟的地方太多了。多谢大家的帮助。