与同步有关,也许你设置一下TimeOut或Saqu...能解决问题,试试吧

解决方案 »

  1.   

    好象只有用DataOutputStream的writeChars才会有这个问题,为什么呢?
      

  2.   

    我也有相似的问题,我在用java做ftp client的时候,get,put ASCII文件出现大小有点不同主要是多了那么0x0D,0x0A,但用cuteftp down跟我的现象也一样.正在思考是ASCII到内存中转换,还是java的stream的问题.
      

  3.   

    这是JDK的问题,更新到jdk1.3.1就好了 
      

  4.   

    让我想起用delphi的UDPSocket控件也出现过这样的问题阿
    要强制检查消息队列的说
      

  5.   

    TO:hccpro(hcc) 当然有……TO:knight_qmh(辉) 我已经换成1.3.1问题依旧……你确定你的131没问题?我换成14再看……TO:cming(白云蓝天) 0D和0A是换行回车符,你是否用的READLINE?
      

  6.   


    是设置成了auto flush,还是在代码中写了条flush()?
      

  7.   

    TO:knight_qmh(辉)  直接写的flush()……
      

  8.   

    如果没有数据,直接flush(),接收应该是-1,我这里没错
    我想知道你的path路径有没有改为1.3.1的
      

  9.   

    还是不行……你确定你是用writeChars(String out)来写,然后用read(byte[] b)来读的吗?能否把你输出和输入的部分贴出来看一下?谢谢!
      

  10.   

    就是你的程序啦,你用java -version看看你的版本
    //Server端
    import java.io.*;
    import java.net.*;
    import java.util.*;public class IOtestSvr {
        public static void main(String[] args)
        {
            boolean on = true;
            try
            {    ServerSocket svrSocket = new ServerSocket(8000);
                while (on) {
                    System.out.println("begin");
                    Socket socket = svrSocket.accept();
                    DataInputStream in = new DataInputStream(socket.getInputStream());
                    byte[] bTest = new byte[1024];
                    int i = in.read(bTest);
                    String str = new String(bTest);
                    int len = str.length();
                    
                    System.out.println(str);
                    System.out.println(i);
                    System.out.println(len);
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
    //Client
    import java.io.*;
    import java.net.*;
    import java.util.*;
    public class IOtestCli {
        public static void main(String[] args) 
        {
            System.out.println("Hello World!");
            try    {
                Socket socket = new Socket("127.0.0.1",8000);
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());
                //out.writeChars("String 1 "+'\n'+'\r');
                //out.flush();
                //out.writeChars("a test ");
                //out.writeChar('a');
                //out.writeChars(" Sting 2");
                out.flush();            
                out.close();            socket.close();
            }
            catch (Exception e) {
                System.out.println("Err");
                e.printStackTrace();
            }
        }
    }
      

  11.   

    你是直接用jdk编译运行还是用别的,如UltraEdit,JBuilder,JCreater....这些也都要重新设置jdk才行
      

  12.   

    可能是我没说清楚吧……
    对,输出端不输出任何东西当然是-1,但如果输出端输出了东西,接收端就无法正常接收了……你试试输出端输出任意一个字符串,然后在接收端接收……我现在用的是14的JDK了
      

  13.   

    把上面注释取消,结果如下:每个字符占两个字节
    String 1
    a test a String 254
    1024
      

  14.   

    诶,我的结果如下:
    begin1
    1024
    begin555,你的机器什么配置啊?
      

  15.   

    我怀疑和机器速度有关……因为接收端接收前先SLEEP一个很短的时间就没问题了……
      

  16.   

    看来用writeChars输出前可能会有一些另外的东西……闲了再慢慢研究吧……无论如何谢谢你了……一点点分,实在不成敬意……谢谢你的关注……