我用java做的telnet程序,发送命令如dos下的dir,返回一些正常的数据,如果我再发一便cd temp,结果受信的时候把上一次dir的结果,又重新收一遍了,怎么处理呀!我只想要我发完命令后改命令响应的结果!
socket = new Socket(address, port);
is = new BufferedInputStream(socket.getInputStream());
os = new BufferedOutputStream(socket.getOutputStream()); public byte[] receive() throws IOException {
int count = is.available();
byte buf[] = new byte[count];
if(count > 0) {
count = is.read(buf);
if(count < 0) throw new IOException("Connection closed.");
buf = negotiate(buf, count);}
return buf;
}

解决方案 »

  1.   

    BufferedInputStream
    这个类里没有flush函数
      

  2.   

    我这是在一个线称里写的,要不段的接收
    close不行呀
    兄弟
    java的socket有这个问题?
    上一次的数据不自动清空!
      

  3.   

    Stream缓冲不用清的, 是指你用过的变量, 如StringBuffer等
      

  4.   

    is = new BufferedInputStream(socket.getInputStream());
    这个流,是不断的接收数据,新的旧的都在里面
    所以,下次读的时候,就又读出来旧的数据了
    有谁做过telnet的程序帮我看看呀
      

  5.   

    1. 可能是你发送端重新发送了, 检查发送端发送的用的变量
    2. 可能接受端变量没有清除可以肯定, 与stream没有关系
      

  6.   

    有谁做过telnet程序的
    你们是一次全部读出来后,再进行negotiate处理吗?
    还是第一个字符就进行negotiate处理!
      

  7.   

    有谁有telnet程序给小弟发一份呀!
    mail  [email protected]