当前位置: 首页 > 面试题库 >

原始以太网的Java库

江育
2023-03-14
问题内容

我正在寻找一个Java库,该库将使我能够访问原始以太网帧,以读取和发送它们。我的最终目标是创建一个BACnet以太网网络扫描仪。

请注意,我不是在寻找TCP \ IP。

任何人都知道一个很好的库可以做到这一点吗?


问题答案:

也许Jpcap可以提供帮助。请注意,有一个具有相同名称的Sourceforge项目,但似乎不是同一项目。

这是一些示例代码(来自库的教程),该示例代码使用Jpcap发送TCP数据包和以太网帧:

编辑:示例代码确实创建了一个TCPPacket,但是您可以创建一个常规Packet

//open a network interface to send a packet to
JpcapSender sender=JpcapSender.openDevice(devices[index]);

//create a TCP packet with specified port numbers, flags, and other parameters
TCPPacket p=new TCPPacket(12,34,56,78,false,false,false,false,true,true,true,true,10,10);

//specify IPv4 header parameters
p.setIPv4Parameter(0,false,false,false,0,false,false,false,0,1010101,100,IPPacket.IPPROTO_TCP,
  InetAddress.getByName("www.microsoft.com"),InetAddress.getByName("www.google.com"));

//set the data field of the packet
p.data=("data").getBytes();

//create an Ethernet packet (frame)
EthernetPacket ether=new EthernetPacket();
//set frame type as IP
ether.frametype=EthernetPacket.ETHERTYPE_IP;
//set source and destination MAC addresses
ether.src_mac=new byte[]{(byte)0,(byte)1,(byte)2,(byte)3,(byte)4,(byte)5};
ether.dst_mac=new byte[]{(byte)0,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10};

//set the datalink frame of the packet p as ether
p.datalink=ether;

//send the packet p
sender.sendPacket(p);

sender.close();


 类似资料:
  • 问题内容: 我正在编写代码以在两个Linux盒之间发送原始以太网帧。为了测试这一点,我只想获得一个简单的客户端发送和服务器接收。 我让客户端正确地制作了数据包(我可以使用数据包嗅探器看到它们)。 在服务器端,我像这样初始化套接字: 我用作ethertype的2字节常量在哪里,所以我听不到多余的网络流量。 当我将此套接字绑定到接口时,必须在socket_addr结构中再次将其传递给协议: 如果我像这

  • 我所说的欺骗是指如果有人在安装windows后,在注册表中或通过软件更改mac地址。我在stack overflow的一篇关于其他问题的帖子中读到过,一个人评论说,他写的代码即使有人欺骗了mac也能工作,因此代码不好。所以我想这可以在Java中完成。我本来想问的,但我不能。我的意思是,如果PC或笔记本电脑没有无线,它应该采取以太网的mac地址。

  • 本文向大家介绍WiFi和以太网之间的区别,包括了WiFi和以太网之间的区别的使用技巧和注意事项,需要的朋友参考一下 无线上网 WiFi,无线保真是一个小型网络,智能手机,计算机或其他可联网设备在小范围内无线连接并使用热点共享Internet。WiFi使用射频波进行无线高速互联网和网络连接。WiFi天线的尺寸非常小,可以放在小型路由器上。Wifi可用于连接打印机,计算机,游戏机,移动设备等。 以太网

  • 问题内容: 当我开始使用Java时,向我暗示我们有两种不同的类型: 我刚从教授那里拿回一份考试,这种差异意味着两个选择作为答案之间的差异。当我请教授澄清时,他告诉我原始值可以是对象。 谁在这里,谁能给我任何证据?证明将是官方的声音,我会选择答案作为答案,同时还会奖励一些众所周知的互联网。 问题答案: 原始值可以视为对象吗? 答案是不。 该JLS状态 Java编程语言中有 两种类型 :基本类型(第4

  • 问题内容: 我想检索用于访问特定网站的网络接口的以太网地址。 用Java如何做到这一点? 解决方案 请注意,公认的的解决方案仅在Java 6中可用。除了执行i(f | p)confing,似乎没有Java 5的解决方案。 问题答案: java.net.NetworkInterface.getHardwareAddress(Java 6中添加的方法) 必须在您感兴趣的机器上调用它- MAC不会跨网络

  • 我正在Tomcat上运行一个web应用程序。我的应用程序连接到其他web服务以满足客户端的请求。有时我会得到java。网在打开URL连接时出现UnknownHostException,之后有时我开始使用java。网SocketException:打开的文件太多。我的服务器不再进一步接受连接。请导游。