如何使用Java监控我的网络连接?

时间:2010-12-20 21:51:00

标签: java networking monitor

是否有任何示例代码可以报告我的PC与Java连接的URL?

虽然我使用浏览器连接到不同的网站并在线观看视频,但它应该捕获网址。它在Java中可行吗?

我不想要详细的流量,只需记录网址。

3 个答案:

答案 0 :(得分:2)

用于执行此类操作的最常用库是libpcap。您可以在tcpdump.org找到更多相关信息。幸运的是,libpcap有一个java wrapper,所以你可以用Java做这种事情。查看他们的examplestutorial了解详情。

答案 1 :(得分:2)

最快的方法可能是捕获命令行tshark程序的输出(至少对于windows和linux)。这适用于我的linux盒子:

sudo tshark -f 'port 80' -R 'http' -V | grep -A 1 '^Hypertext Transfer Protocol'

并产生如下输出:

Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
Hypertext Transfer Protocol
    GET /questions/4494294/r-gplots-barplots-how-to-fix-bar-width-independent-of-paper-setting HTTP/1.1\r\n
--
Hypertext Transfer Protocol
    HTTP/1.1 200 OK\r\n
--
Hypertext Transfer Protocol
    GET /posts/4494294/ivc/086e HTTP/1.1\r\n
--
Hypertext Transfer Protocol
    HTTP/1.1 204 No Content\r\n
--
Hypertext Transfer Protocol
    [truncated] GET /__utm.gif?utmwv=4.8.6&utmn=20455052&utmhn=stackoverflow.com&utmcs=UTF-8&utmsr=1600x1200&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=10.1%20r102&utmdt=graph%20-%20R%3A%20gplots%2C%20barplots%3A%20how%20to%20fix%20bar%20width%20i
--
Hypertext Transfer Protocol
    HTTP/1.1 200 OK\r\n
--

你应该为Windows获得类似的东西。实验。如何将tshark的输出转换为java取决于你。

如果你想要一个全java解决方案,http://jnetpcap.com/怎么样?

您将不得不编写(或使用提供的库)某些特定于平台的JNI代码。

jNetPcap 使用的

libpcap / WinPcap 根据我的经验至少在Windows和Linux上提供可靠性。我有使用 libpcap / WinPcap 的经验,但没有 jNetPcap 的经验。

tshark实际上也使用 libpcap / WinPcap

无论哪种方式,你都会看到很多误报。打开HTML页面需要获得许多图片,样式表,javascript库等。上面的代码段是打开stackoverflow.com页面。

答案 2 :(得分:0)

如果您只想在GUI中查看Java应用程序出于调试目的而创建的流量,那么Wireshark是您的朋友。 tshark只是wireshark的命令行版本。

相关问题