我有用过 wireshark 它是监控指定网卡的所有网路流动
我想要监控的是指定Windows 的 app process
并能用C#/Java/C等做成背景程序监控并做相对应的逻辑处理(如发警报、保存数据到DB)
以下是询问AI结果,感觉也是监控网卡不是监控单一的程序、软体
在C#和Java中,你可以使用第三方的库来捕捉指定进程的网络封包。以下是两种常用的方法:
GetAllDevices()
方法获取可用的网卡列表,然后选择要监听的网卡。接下来,你可以使用LibPcapLiveDevice
类创建一个设备实例,并注册一个回调函数来处理捕获到的封包。在回调函数中,你可以获取每个封包的数据,然后进行相应的处理逻辑。var devices = LibPcapLiveDeviceList.Instance;
var device = devices[0]; // 选择要监听的网卡
device.OnPacketArrival += new PacketArrivalEventHandler(PacketArrived);
device.Open(DeviceMode.Promiscuous, 1000);
device.StartCapture();
...
private void PacketArrived(object sender, CaptureEventArgs e)
{
// 处理捕获到的封包
}
JpcapCaptor.getDeviceList()
方法获取可用的网卡列表,然后选择要监听的网卡。接下JpcapCaptor.openDevice(selectedDevice, snapLen, promiscuous, timeout)
方法打开选择的设备,并设置一些参数,例如抓包长度、是否开启混杂模式和超时时间。然后,你可以使用loopPacket()
方法开始捕获封包,并传入一个PacketReceiver
对象作为处理捕获到的封包的回调函数。
以下是一个使用jpcap库捕获封包的简单示例:
JpcapCaptor captor;
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
// 选择要监听的网卡
NetworkInterface selectedDevice = devices[0];
try {
// 打开选择的网卡并设置参数
captor = JpcapCaptor.openDevice(selectedDevice, 65535, false, 20);
// 创建一个实现PacketReceiver接口的回调函数对象
PacketReceiver packetReceiver = new PacketReceiver() {
@Override
public void receivePacket(Packet packet) {
// 处理捕获到的封包
}
};
// 开始捕获封包
captor.loopPacket(-1, packetReceiver);
} catch (IOException e) {
e.printStackTrace();
}
请注意,上述示例仅提供了基本的捕获封包的代码框架,你还需要根据自己的需求来处理捕获到的封包,例如进行协议解析、数据分析等。
你可以用Windows Filtering Platform (WFP) API来实现对进程的网络流量的监控。但是呢WFP是Windows的原生API,只能通过C++调用,不能直接在C#或者Java里用
问题内容: 是否可以在Java命令行应用程序中捕获+ 信号?我想在终止程序之前清理一些资源。 问题答案: 您可以将关闭挂钩连接到VM,只要VM关闭,该挂钩便会运行: Java虚拟机将响应以下两种事件而关闭: 当最后一个非守护程序线程退出时,或者调用exit(等效于System.exit)方法时,程序将正常退出,或者 响应于用户中断(例如键入+ )或系统范围的事件(例如用户注销或系统关闭)来终止虚拟
我有一个有4个参数的类。还有一个测试,将空对象放入。有可能捕捉到这个空值吗?我的意思是,有些测试将IlligalArgumentException放在了一起。所以,如果我尝试用try-catch块捕捉这个空对象,对于整个costructor块,这个可以工作,但其他测试会崩溃,反之亦然。
问题内容: 我听说捕捞被认为是不好的作法。我当前正在加载一个不能保证在PATH上的.dll,并希望在不存在的情况下切换到用户配置的位置。 有更好的方法吗?还是在这里接受是可以接受的? 问题答案: 除了提供有关如何从技术上解决问题的建议以外,我想花点时间解释一下为什么它首先被认为是“不好的做法”。 让我们从澄清什么是类开始。 在Java中,将引发错误和异常(它们是主要类型)。通过使用关键字可以完成上
在节点中。在js服务器上,捕获SIGTERM和捕获SIGINT有什么区别吗? 我认为进程不应该能够防止SIGINT关闭? 我是否能够捕获两个信号并阻止退出?我的实验表明答案是肯定的,但从我所读到的内容来看,SIGINT总是假设关闭一个进程。 或者我把SIGINT和SIGKILL混淆了?也许SIGKILL是我无法恢复的信号? 捕捉这些信号当然可以让我优雅地关机: 我想我把SIGINT和SIGKILL
问题内容: 我想我很近。我将htaccess重定向到网站(前端/网络)和路径()。该网站看起来不错,正在加载CSS文件等。 如果您访问以下网址:http:// localhost / yii2app / -它会加载主页,并且不会在地址栏中重定向,但该页面会在所有URL中显示frontend / web。 如果您访问以下网址:http:// localhost / yii2app / admin-
问题内容: 我有一个很大的数学表达式,必须动态创建。例如,一旦我已经解析了“东西”,结果就会像一个字符串:。 因此,为了计算该表达式的结果,我使用的是函数…… 这里的问题是,有时我会收到错误消息,说被零除,并且我不知道如何捕获该异常。我已经尝试过类似的事情: 要么: 但这行不通。因此,如何避免被零除的应用程序崩溃? 编辑: 首先,我想澄清一下:表达式是动态构建的,因此如果分母为零,我不能仅仅求值。