发送完数据一定要flush,否则另一方会等待.

解决方案 »

  1.   

    1个char(16位)可以存1个汉字
    而文件长度是以byte计算的,所以长度就不对比如文件中4096个汉字,文件长度是4096*2
    int i = 客户端发过来的文件长度/ c.length + 1; //i为3,其实循环2次就够了
      

  2.   

    通过socket传输的读不全也不奇怪.
    所以不能用第2种循环来控制
    我从来都没用flush,也没出现过等待的情况.
      

  3.   

    我客户传完数据,服务器端也接收完写到文件里去了,但是还是在等待read。。不结束:(
      

  4.   

    还是可能没读完,你可以试试把剩下的内容输出,检查一下到底是什么东西。如果是没收到,但就是在等待,那就关掉连接吧,反正你也知道发送多少个BYTE(建议用BYTE来计算,比较准确),而且确实也都收到了。
      

  5.   

    我建议换个byte[]直接用outputStream 或者Inputstream来传.
    何必又要弄成FileWriter或者FileReader.