📄 capture.java
字号:
package model;
//Copyright (C) 2008 Harald Unander, Wang Wenjuan
//
// This file is part of WlanTV.
//
// WlanTV is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// WlanTV is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with WlanTV. If not, see <http://www.gnu.org/licenses/>.
import java.util.concurrent.LinkedBlockingQueue;
import view.HeapMonitor;
import main.Main;
import model.Packet.CH_MODES;
public class Capture extends Command {
private String source;
private boolean firstLine;
private long timeOffset;
private LinkedBlockingQueue<Packet> packetQ;
private CH_MODES chMode;
private boolean includeBadFcs;
private HeapMonitor heapMonitor;
public Capture(String source, CH_MODES chMode, HeapMonitor heapMonitor) throws Exception {
this.chMode = chMode;
this.source = source;
this.heapMonitor = heapMonitor;
packetQ = new LinkedBlockingQueue<Packet>();
if (Main.properties.getProperty("bad.fcs","include").equals("include"))
includeBadFcs = true;
else
includeBadFcs = false;
// System.out.println(System.getProperty("user.dir"));
// System.out.println(osName);
}
public void run() throws Exception {
try {
String cmd =
Main.tsharkExe+
" -l -E separator=! "+
source+" "+
RawPacket.getTsharkFieldString().toString();
// System.out.println(cmd);
firstLine = true;
execute(cmd);
}
catch (Exception e) {
throw(e);
}
}
@Override
public void newLine(String line) throws InterruptedException {
Packet r = new Packet();
if (firstLine) {
r.setHeaderType(line);
r.populateFromFields(line);
timeOffset = r.frameTimeRel;
}
try {
r.populateFromFields(line);
if (r.wlanBadFcs == 0 || includeBadFcs) {
r.frameTimeRel -= timeOffset;
r.calculate(chMode);
packetQ.put(r);
firstLine = false;
}
} catch (ArrayIndexOutOfBoundsException e){
e.printStackTrace();
};
// if (i++ % 1000 == 0) {
// Thread.sleep(1);
// }
}
public LinkedBlockingQueue<Packet> getPacketQ() {
return packetQ;
}
@Override
public boolean heapOk() {
return heapMonitor.memOk(false);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -