我用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;
}
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;
}
这个类里没有flush函数
close不行呀
兄弟
java的socket有这个问题?
上一次的数据不自动清空!
这个流,是不断的接收数据,新的旧的都在里面
所以,下次读的时候,就又读出来旧的数据了
有谁做过telnet的程序帮我看看呀
2. 可能接受端变量没有清除可以肯定, 与stream没有关系
你们是一次全部读出来后,再进行negotiate处理吗?
还是第一个字符就进行negotiate处理!
mail [email protected]