Help, 200分相送!

ch81 2003-03-15 02:50:59
public class ARPEntry
{
public static void main(String[] args)
{
Runtime OS = Runtime.getRuntime();
try
{
Process pro = OS.exec("arp");
InputStream IS = pro.getInputStream();
System.out.println(IS.available());
}
catch (IOException E)
{
System.out.println(E);
}
catch (SecurityException E)
{
System.out.println("Security");
}
}
}
在OS下执行一个命令,类似上面的arp,并获取他的结果输出。
上面是我的程序。每次打印总是Available为0,那位兄弟,能看看是
什么问题,或者其他方法如何实现相同的功能?
解决OK,我在送100分。呵呵!
3X
...全文
68 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mercury1231 2003-03-15
  • 打赏
  • 举报
回复
另外为什么你的源代码中的InputStream IS = pro.getInputStream();我改成了InputStream IS = pro.getErrorStream();

是因为你运行的arp命令不带参数,所以返回的信息是以错误提示出现的。虽然在命令行下看起来一样,但是对java的标准输入来说,是不同的。
mercury1231 2003-03-15
  • 打赏
  • 举报
回复
这个问题可能是因为Java程序运行在JVM上,而arp命令是本地平台方法,所以这个process执行的时候不可能保证同步性或者是任何的次序。所以的话,比较麻烦。
mercury1231 2003-03-15
  • 打赏
  • 举报
回复
hehe, 真是晕倒,我刚才是在JCreator里边做的。在命令行下试了一试,果然是0。
这样吧,你把 Thread.currentThread().sleep(1000l);
改为
Thread.currentThread().sleep(2000l);
再试一下,嗬嗬,不好意思。
ch81 2003-03-15
  • 打赏
  • 举报
回复
3X,I just Try. Still 返回0
mercury1231 2003-03-15
  • 打赏
  • 举报
回复
如果对我改动的部分不明白或者有不同意见,给我发消息好了。回复我不一定看得到
mercury1231 2003-03-15
  • 打赏
  • 举报
回复
hehe, 我修改过后的源代码如下:
另外,我也算是初学啦。大家一起努力吧。:)


import java.io.*;

public class ARPEntry
{
public static void main(String[] args)
{
Runtime OS = Runtime.getRuntime();
try
{
Process pro = OS.exec("arp");
Thread.currentThread().sleep(1000l);
InputStream IS = pro.getErrorStream();
BufferedInputStream input = new BufferedInputStream(IS);

System.out.println(input.available());
}
catch (IOException E)
{
System.out.println(E);

}
catch(InterruptedException ie)
{
System.out.println(ie);
}
catch (SecurityException E)
{
System.out.println("Security");
}
}
}
ch81 2003-03-15
  • 打赏
  • 举报
回复
Anyway, Thank you.
ch81 2003-03-15
  • 打赏
  • 举报
回复
我刚开始学的Java,呵呵。
能否给个具体的解决?
mercury1231 2003-03-15
  • 打赏
  • 举报
回复
嗬嗬,楼主太不小心了:

请自己查阅Java API documentation。你会注意到InputStream类的available方法是不能直接用的,他会总是return 0,一定要用扩展InputStream类的子类来用这个方法。
The available method for class InputStream always returns 0.
This method should be overridden by subclasses.



62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧