应该不可以,即使多次调用socket.getInputStream()得到的应该都是同一个输入流,除非你使用的是不同的socket.

解决方案 »

  1.   

    我自己错了测试,
    同一个socket流,
    先用bufferedreader读入String,
    在用datainputstream读入byte[],
    没有问题。
    但是我觉得很不安全,我只是觉得。
    所以想问一下高人,这样是否会出现什么问题?
    读入的时候,是否会按顺序截取。
      

  2.   

    要想按你要求的顺序,就别用bufferedreader,BFR应该是一次读满一个BUFFER……
    这样当你的DIS读的时候,读到的实际上是读满了BUFFER以后的东西了……
      

  3.   

    是同一个输入流,你这样是可以的,可以用不同的方法读同一个输入流。
    我总是这么做的(只是我没有用过socket.做词法分析的时候我都是这么做的).
      

  4.   

    我用buffer读行,
    他不是读到了一行,就不读了么?同一个输入流是不是说,我在后面截取得字节数组也就是从bfr读完后开始的?
      

  5.   

    你作一下测试不就清楚了?我是这样作的:写一个服务器端和一个客户端,连接上以后,客户端向服务器端传2次字符串,第一个用BFR来读,第二个用DIS来读,最后的情况时,正常情况下,DIS能读到第二个串,但如果BFR读之前给一定的延时,则,DIS读不到任何东西,调试可以看到,第二个串也在BFR里面……具体还需进一步探讨……
      

  6.   

    进一步测试发现,如果bfr.readLine()发生在第二个串发送之前,则DIS能读到第二个串,反之则不行……
      

  7.   

    :)写得很乱的,不好意思贴出来了……最终结论:最好别把BFR和DIS一起用……
      

  8.   

    faint,
    我现在需要通过socket读取中文字符以及字节数组,有什么好的办法?
    (据说,DataInputStream不支持Unicode.)
    能留下oicq么?讨论讨论?
    my oicq 3607975.
      

  9.   

    :)谁说DIS不支持Unicode???读中文字符用readChar()不行吗?