以太网发送自定义协议数据包java
2016-08-05 11:38
106 查看
//1枚举网卡并打开设备
jpcap.NetworkInterface[] devices = JpcapCaptor.getDeviceList();
NetworkInterface device = devices[2];
JpcapSender sender = null;
//2.原始类型数据包,这种包没有首部字节。UDPPacket、IPPacket有首部字节
//需要设置udp.setIPv4Parameter(0,false,false,false,0,false,false,false,0,0,255,
// 230,//230未定义协议
// InetAddress.getByName("192.168.1.100"),
// InetAddress.getByName("192.168.1.102"));
Packet udp = new Packet();
try {
sender = JpcapSender.openDevice(device);
} catch (IOException e) {
e.printStackTrace();
}
EthernetPacket ether = new EthernetPacket();
//设置自定义协议类型
int type = Integer.decode("0x7799");
ether.frametype = (short)type;
byte[] desmac = stomac(macAddress);//目标mac地址
byte[] srcmac = null;
try {
srcmac = stomac(getLocalMac(InetAddress.getLocalHost()));
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} // 本机MAC数组
ether.src_mac = srcmac;
ether.dst_mac = desmac;
udp.datalink = ether;
//设置字节的数据以及长度
byte[] data = new byte[54];
String typeStr = "hello";
byte[] types = ByteUtil.ToByte(typeStr);
for (int i = 0; i < 2; i++) {
data[i] = types[i];
}
udp.data = data;
sender.sendPacket(udp);
jpcap.NetworkInterface[] devices = JpcapCaptor.getDeviceList();
NetworkInterface device = devices[2];
JpcapSender sender = null;
//2.原始类型数据包,这种包没有首部字节。UDPPacket、IPPacket有首部字节
//需要设置udp.setIPv4Parameter(0,false,false,false,0,false,false,false,0,0,255,
// 230,//230未定义协议
// InetAddress.getByName("192.168.1.100"),
// InetAddress.getByName("192.168.1.102"));
Packet udp = new Packet();
try {
sender = JpcapSender.openDevice(device);
} catch (IOException e) {
e.printStackTrace();
}
EthernetPacket ether = new EthernetPacket();
//设置自定义协议类型
int type = Integer.decode("0x7799");
ether.frametype = (short)type;
byte[] desmac = stomac(macAddress);//目标mac地址
byte[] srcmac = null;
try {
srcmac = stomac(getLocalMac(InetAddress.getLocalHost()));
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} // 本机MAC数组
ether.src_mac = srcmac;
ether.dst_mac = desmac;
udp.datalink = ether;
//设置字节的数据以及长度
byte[] data = new byte[54];
String typeStr = "hello";
byte[] types = ByteUtil.ToByte(typeStr);
for (int i = 0; i < 2; i++) {
data[i] = types[i];
}
udp.data = data;
sender.sendPacket(udp);
相关文章推荐
- 让Dotnet识别Java发送来的自定义SoapHeader
- TCP和UDP 协议发送数据包的大小
- Java利用TCP协议发送文件(二)--数据包设计
- TCP和UDP协议发送数据包的大小方面的知识介绍
- TCP和UDP 协议发送数据包的大小
- JAVA Http协议的发送接收
- TCP和UDP 协议发送数据包的大小
- 用户自定义协议之串口发送与接收
- 使用java 发送https 协议请求
- [Java]Android发送UDP数据包
- TCP和UDP 协议发送数据包的大小
- Android使用wifi通过UDP协议发送广播数据包给PC接收不到问题解决方法
- JAVA自定义协议实现网页启动应用程序
- Java 网络编程 字符流的发送与接收 自定义数据边界
- 以太网数据包如何发送
- JavaMail stmp协议 发送邮件例子
- JAVA中使用Socket实现自定义协议、无服务器即时通讯(类似飞秋)
- TCP和UDP协议发送数据包的大小方面的知识介绍
- mina仿qq聊天功能,自定义协议,协议的编码和解码详解,发送xml对象json,mina开发大全,详细api,mina心跳
- Java_网络编程_使用UDP协议发送及接收数据