当前位置:首页 >> 芯片

关于JAVA的UDP协议

芯片  |  2020-06-29  |  来源:潜江物联网云平台

关于JAVA的UDP协议

我想使用JAVA本身自带的方法绑定自己PC的某一张卡收发UDP数据 请问我要怎么做?

(可以不用把源码写给我,只要告诉我用什么类或者什么方法,甚至是给我点提示都行)

1.不能使用插件(因为我之前用JPCAP实现了,但是客户不允许)

2.需要绑定MAC,因为我做的项目的通信不需要基于IP,所以绑定IP是没什么用的。

我把我用JPCAP实现的方法贴出来 以便大家好理解

Java code

EthernetPacket ether = new EthernetPacket();ametype = HERTYPE_IP;t_mac = {(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff};JpcapSender sender = enDevice(devices[i]);c_mac = devices[i].mac_address;UDPPacket p = new UDPPacket(5555,5556);talink = ether;

其中,devices[]是我获取的PC机所有卡信息,通过talink = ether;这句话,我就可以指定卡收发UDP数据了,不知道我该怎么用JAVA本身自带的方法实现

答:标准JDK API的包中是不支持数据链路层功能的。连IP层都不支持。(JDK6.0中所谓的获取卡MAC主要目的还是用于组播的卡MAC绑定。)我可以明确对楼主说:你的这个需求在标准JAVA API中是无法完成的。

你的途径有:

1)支持数据链路层功能的包如:JPCAP包[它其实是从LINUX中有名的LIBPCAP轻量级包装而来的]

2)你自己的JNI或JNA[用C在数据链路层写--这在LINUX下很好写所以导致蜘蛛很少过来爬行抓取。其实这个很大程度上不是因为外链不够,在WINDOWS下在数据链路层写,你会很麻烦,除非你用第三方的低层驱动-如:有名的WINPCAP包中的低层络驱动。](用C写,JAVA调用)

3)一个卡可以绑定多个IP,如:逻辑多址。绑定IP其实没什么用。真正有用的(更强一些的)当然是绑定MAC。

JAVA本身不能实现,再加个类似JPCAP的就可以.

例:

目标IP:192.168.100.254

宿主PC-NIC-1:192.168.1003、申请条件:缴存人发生以下情形之一的.1

宿主PC-NIC-2:10.3.1.1

假设你的客户要求往[目标IP]去包都要从NIC2走,那么做二个设置:

1.在NIC2上加个IP[192.168.100.250],保证能PING通[目标IP].

2.修改PC路由表[假设PC是瘟到死系统]

route add 192.168.100.254 255.255.255.255 192.168.100.250

这样就应该可以了.

改完后PING下,再抓几个包看看就知道了.

失眠肩颈背部酸痛
治疗男性勃起功能障碍药品
湿热体质能艾灸吗
先声药业再上市
泰州白癜风医院哪家好
青岛治疗白癜风好的医院