blob: e33da29412d61e4a1939a09cfc596811d430a523 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
package test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.NetFlags;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
public class TestNet {
/**
* @param args
*/
public static void main(String[] args) {
try {
Sigar sigar = new Sigar();
FileSystem fslist[] = sigar.getFileSystemList();
for (int i = 0; i < fslist.length; i++) {
FileSystem fs = fslist[i];
try {
FileSystemUsage usage = sigar.getFileSystemUsage(fs.getDirName());
if (fs.getType() == 2) {// 先取每个盘符的大小和剩余空间
OutputStreamWriter fos = null;
File file = new File(fs.getDirName() + File.separator + "writetest.temp");
System.out.println("-----------file path--" + file.getAbsolutePath());
try {
String testStr = "测试硬盘是否可写,现在开始写入文件";
fos = new OutputStreamWriter(
new FileOutputStream(file), "utf-8");
fos.write(testStr);
fos.flush();
} catch (IOException e) {
System.out.println("测试硬盘是否可写:" + e.getMessage());
}finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
}
}
}
if(file.exists()){
file.delete();
System.out.println("---------file delete=" + file.getAbsolutePath());
}
}
} catch (SigarException e) {
if (fs.getType() == 2)
throw e;
continue;
}
}
String ifNames[] = sigar.getNetInterfaceList();
if(ifNames.length >0){
System.out.println("========= all list ==========");
for (int i = 0; i < ifNames.length; i++) {
String name = ifNames[i];
try {
NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);
System.out
.println(name
+ "\t"
+ ifconfig.getType()
+ "\t"
+ ifconfig.getFlags()
+ "---((ifconfig.getFlags()&NetFlags.IFF_POINTOPOINT)>0)="
+ ((ifconfig.getFlags() & NetFlags.IFF_POINTOPOINT) > 0)
+ "---((ifconfig.getFlags()&NetFlags.IFF_LOOPBACK)>0)="
+ ((ifconfig.getFlags() & NetFlags.IFF_LOOPBACK) > 0)
+ "---((ifconfig.getFlags()&NetFlags.IFF_BROADCAST)<=0)="
+ ((ifconfig.getFlags() & NetFlags.IFF_BROADCAST) <= 0)
+ "---((ifconfig.getFlags()&NetFlags.IFF_MULTICAST)<=0)="
+ ((ifconfig.getFlags() & NetFlags.IFF_MULTICAST) <= 0)
+ "\t---((ifconfig.getFlags()&NetFlags.IFF_UP)<=0)="
+ ((ifconfig.getFlags() & NetFlags.IFF_UP) <= 0));
} catch (SigarException e) {
System.out.println(name);
continue;
}
}
System.out.println("========= net list ==========");
for (int i = 0; i < ifNames.length; i++) {
String name = ifNames[i];
try {
NetInterfaceConfig ifconfig = sigar.getNetInterfaceConfig(name);
// *** 网卡类型:ethernet, Local Loopback(本地环回网卡)
/*if (!"ethernet".equalsIgnoreCase(ifconfig.getType())) {
continue;
}*/
// *** 这里只取 ethernet 网卡类型
if ((ifconfig.getFlags() & NetFlags.IFF_POINTOPOINT) > 0) {
continue;
}
if ((ifconfig.getFlags() & NetFlags.IFF_LOOPBACK) > 0) {
continue;
}
if ((ifconfig.getFlags() & NetFlags.IFF_BROADCAST) <= 0) {// broadcast地址无效
continue;
}
if ((ifconfig.getFlags() & NetFlags.IFF_MULTICAST) <= 0) {// 不支持multicast
continue;
}
if ((ifconfig.getFlags() & NetFlags.IFF_UP) <= 0) {
continue;
}
System.out.println(name + "--" + ifconfig.getAddress());
} catch (SigarException e) {
continue;
}
}
Scanner sc = new Scanner(System.in);
while(true){
System.out.print("\nplease enter net name:");
String name = sc.nextLine();
if("quit".equalsIgnoreCase(name)){
break;
}
if(name==null || "".equals(name)){
continue;
}
System.out.println("-----------" + name + "------------");
try{
NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);
System.out.println("speed: " + ifstat.getSpeed() + "b/s\nRxPackets: " + ifstat.getRxPackets() + "\nTxPackets: " + ifstat.getTxPackets());
} catch (SigarException e) {
e.printStackTrace();
}
}
}
} catch (SigarException e) {
System.err.println("获取网络信息异常");
e.printStackTrace();
}
}
}
|