关于BufferedReader的问题,只能在屏幕上打印一部分内容,为什么?如果使用注释掉的方法输入却可以全部输入,请问要如何修改?谢谢。
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;public class MyTelnet
{
Socket socket = null;
PrintWriter out = null;
//BufferedInputStream in = null;
BufferedReader in = null;
String reString = null;
public MyTelnet()
{}
public String getOpenConnection(String host,int port,String command)
{
try
{
socket = new Socket(host,port);
out = new PrintWriter(socket.getOutputStream());
Thread.sleep(1000);
out.write(command);
out.flush();
//in = new BufferedInputStream(socket.getInputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}catch(UnknownHostException e)
{
String title = "连接服务器时产生错误";
String message = "连接服务器时产生错误" + e.getMessage();
new ErrorMessage(message,title);
}catch(Exception ie)
{
String title = "输入输出流产生错误";
String message = "输入输出流产生错误" + ie.getMessage();
new ErrorMessage(message,title);
}
try
{
/*byte[] buff = new byte[1024];
String str = null;
while(true)
{
int n = in.read(buff);
if(n > 0)
{
str += new String(buff,0,n);
reString = str;
System.out.println(reString);
}
}*/
while(in.ready())
{
if(in.readLine().indexOf("Password:") >0)
{
}
System.out.println(in.readLine());
}
out.close();
in.close();
socket.close();
}catch(Exception ie)
{
System.out.println("Error");
}
return reString;
}
}
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;public class MyTelnet
{
Socket socket = null;
PrintWriter out = null;
//BufferedInputStream in = null;
BufferedReader in = null;
String reString = null;
public MyTelnet()
{}
public String getOpenConnection(String host,int port,String command)
{
try
{
socket = new Socket(host,port);
out = new PrintWriter(socket.getOutputStream());
Thread.sleep(1000);
out.write(command);
out.flush();
//in = new BufferedInputStream(socket.getInputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}catch(UnknownHostException e)
{
String title = "连接服务器时产生错误";
String message = "连接服务器时产生错误" + e.getMessage();
new ErrorMessage(message,title);
}catch(Exception ie)
{
String title = "输入输出流产生错误";
String message = "输入输出流产生错误" + ie.getMessage();
new ErrorMessage(message,title);
}
try
{
/*byte[] buff = new byte[1024];
String str = null;
while(true)
{
int n = in.read(buff);
if(n > 0)
{
str += new String(buff,0,n);
reString = str;
System.out.println(reString);
}
}*/
while(in.ready())
{
if(in.readLine().indexOf("Password:") >0)
{
}
System.out.println(in.readLine());
}
out.close();
in.close();
socket.close();
}catch(Exception ie)
{
System.out.println("Error");
}
return reString;
}
}
解决方案 »
- 如何利用JEditorPane 的 setPage来访问QQ空间
- 【求助】Java官网上的一个bug,但是不知道具体是哪个版本Fix掉了这个Bug
- java socket客户端发送SQL语句到服务器端,服务器端怎么样将查询到的resultset再发送给客户端,客户端应该怎么样接受客户端?
- 通过JDBC如何获取TEST数据库表的结构
- 如何快速将数据导入excel问题, 在线拜求解答
- 类似QQ的JAVA通讯程序
- 怎么生成报表和打印报表
- 三个swing问题 JTabbedPane JRadioButton 以及JList
- 连点同情心都没有吗?
- webservice是否提供了对文件的读取的方便支持??????
- Hibernate left join fetch 关联查询问题
- 紧急求救,java swing写的一个画面,点击按钮之后,要跳到一个web页面去,请高人赐教!!
{
if(in.readLine().indexOf("Password:") >0)
{
}
System.out.println(in.readLine());
}
-------------------------------
in.ready()是什么?如果是in.read()的话,有一部分字符会被这个函数读掉。
可以修正为
String s = null;
while((s=in.readLine)!=null)
{
if(s.indexOf("Password:") >0)
{
}
System.out.println(s);
}
我用改用了while((s=in.readLine)!=null)方法,只是多输入了三行,后面还是有一部分没有输入。
网上有人说要用flush(),但BufferedReader方法并没有这个方法。
byte[] buff = new byte[1024];
String str = null;
while(true)
{
int n = in.read(buff);
if(n > 0)
{
str += new String(buff,0,n);
reString = str;
System.out.println(reString);
}
}
}
也就是服务器端应该是没有问题的。
每次读一行,很好用啊~
返回交换机的配置信息:
vlan 1 ....................
vlan 2 ....................
.
.
.
vlan 10 ...................
但现在只输出到vlan 5..............后面的就不再输出了。