package BaoWen;
|
import java.io.File;
|
import java.io.IOException;
|
import java.net.DatagramPacket;
|
import java.net.DatagramSocket;
|
import java.net.InetAddress;
|
import java.net.SocketException;
|
import java.net.UnknownHostException;
|
import Frame.BaoWenHuiFang;
|
import Frame.S2Manage;
|
import Frame.TcpIpManage;
|
import Frame.WifiMange;
|
import Method.BaoWenShow;
|
import Method.GetNowTime;
|
import Method.PutPosInHistoryDataBase;
|
import Method.SaveFIleInTxt;
|
import PbuliClass.ShowMessage;
|
import PbuliClass.Systems;
|
import ToolBarS.ToolBarModel;
|
import anchor.Anchor;
|
import engbs.Bs_look_baowen;
|
import home.Open_soft_dialog;
|
import tbDataModel_Dell.DellS2;
|
import tbDataModel_Dell.Dell_Ip;
|
import tbDataModel_Dell.Dell_Wifi;
|
import tbDataModel_Dell.Tools;
|
|
/**¸ÃÀàÓÃÓÚ½ÓÊÕUDP±¨ÎÄ*/
|
|
public class Udp_Receive implements Runnable {
|
static DatagramSocket socket;
|
int port=8234;
|
DatagramPacket packet;
|
boolean G4=false;
|
static int yq=0;
|
static int bytlenth=1024;
|
static int udpbaowenmun=1;
|
static String datas;
|
/**³õʼ»¯¶ÔÏó
|
* @throws NumberFormatException
|
* @throws IOException */
|
public Udp_Receive() {
|
if(Systems.sys().getBaoliu1() !=null) {
|
String port1=Systems.sys().getBaoliu1();
|
port=Integer.parseInt(port1);
|
if(Systems.isAncshengjimoshi()) {//Èç²»ÊÇ»ùÕ¾Éý¼¶Ä£Ê½
|
port=8888;
|
}
|
|
}else {
|
ShowMessage.zidingyi("UDP½ÓÊÕ¶Ë¿ÚΪnull");
|
}
|
try {
|
socket = new DatagramSocket(port);
|
} catch (SocketException e) {
|
ShowMessage.zidingyi_24("°ó¶¨¶Ë¿Ú"+port+"ʧ°Ü");
|
}
|
byte[] data = new byte[bytlenth]; // ´´½¨byteÊý×é
|
packet= new DatagramPacket(data,bytlenth);
|
|
}
|
|
|
/**Æô¶¯Ï̵߳ķ½·¨*/
|
public void startThread() {
|
Thread t=new Thread(this);
|
t.start();
|
Open_soft_dialog.addara("Æô¶¯"+port+"¶Ë¿Ú¼àÌý");
|
}
|
|
|
public void run() {
|
while(true) {
|
getdata();
|
}
|
}
|
|
/**»ñÈ¡Êý¾Ý*/
|
public void getdata() {
|
if(socket !=null) {
|
try {
|
socket.receive(packet); // ½ÓÊÕÊý¾Ý°ü
|
udpbaowenmun++;
|
if(ToolBarModel.isStartpos()) {//Èç¹ûÔÝͣûÓÐÆô¶¯
|
delludp_receive(packet);
|
}
|
if(udpbaowenmun==5000000) {//Èç¹ûÊý¾ÝµÈÓÚ500ÍòÌõÉèÖÃΪ1
|
udpbaowenmun=1;
|
}
|
} catch (Exception e) {
|
e.printStackTrace(); // Êä³öÒì³£ÐÅÏ¢
|
}
|
}
|
}
|
|
/**yang2023.07.08*/
|
public static void delludp_receive(DatagramPacket packet) {
|
int lenth=packet.getLength();
|
byte[] byt=subBytes(packet.getData(),0, lenth);
|
String ip=packet.getAddress().getHostAddress();//»ñÈ¡·¢ËͶ˵ÄIPµØÖ·¶ÔÏó
|
int port=packet.getPort();
|
if(TcpIpManage.isAsclljx()) {//20230709yang
|
datas=new String(packet.getData(), 0, lenth);//½âÎöASCLL¸ñʽÊý¾Ý,ÐèÒª±¨ÎÄ²é¿´Ò³Ãæ¹´Ñ¡
|
}else {
|
datas=Tools.Bytes2HexString(byt);//½âÎöHEX¸ñʽÊý¾Ý
|
|
}
|
String upinfo=datas.toUpperCase();
|
DellMessage.save_log(upinfo);//Èç¹ûJNA¿ªÆô±£´æÔʼÊý¾Ýyang20230725
|
Bs_look_baowen.insert_all(upinfo,"ËùÓбêÇ©");//BS¶Ë²é¿´±¨ÎÄ
|
Dell_55AA01.dell_gui();
|
Dell_Ip.insert(ip);
|
boolean c=TcpIpManage.getStar();
|
boolean b=TcpIpManage.get_xieyi_type().equals("2");
|
if(c) {
|
BaoWenShow.show2(datas, "UDP¶Ë¿Ú", ip, port);
|
if(b) {
|
BaoWenShow.show2(datas, "ÔʼÊý¾Ý", ip, port);
|
}
|
}
|
if(!BaoWenHuiFang.isHuifangbaowen()) {//´¦ÀíÔʼÊý¾Ýº¯Êý
|
//²åÈëÔʼÊý¾Ý½øÈëÔʼÊý¾Ý¼¯ºÏ
|
if(port==1500) {
|
dell_serchanchor(upinfo,ip,port,lenth, packet);
|
}else {
|
String time = GetNowTime.timestamp2();
|
if (upinfo.startsWith("55AA0C")) {
|
Dell_baowen_55AA0C.intsert(ip,upinfo,time,port);
|
}else{
|
Dell_Baowen.intsert(ip, upinfo,time, port);
|
}
|
}
|
//Èç¹û¿ªÆôÁ˱¨Îı£´æÔʼ±¨ÎĻطÅ
|
if(ToolBarModel.isSavebaowen() && (!BaoWenHuiFang.isHuifangbaowen())) {
|
String time=GetNowTime.timestamp2();
|
PutPosInHistoryDataBase.insert_baowen(upinfo, ip,time);
|
String messages=upinfo+","+ip+","+time;
|
String name="./savefile/"+ToolBarModel.getBaowenname()+".txt";
|
File file4=new File(name);
|
SaveFIleInTxt.save_in_txt(messages,file4,true);
|
messages=null;
|
}
|
}
|
byt=null;
|
}
|
|
public static DatagramSocket getSocket() {
|
return socket;
|
}
|
|
public static byte[] subBytes(byte[] src, int begin, int count) {
|
byte[] bs = new byte[count];
|
System.arraycopy(src, begin, bs, 0, count);
|
return bs;
|
}
|
|
|
|
public static int getYq() {
|
return yq;
|
}
|
|
|
|
|
/**½«Êý¾Ý·¢¸ø»ùÕ¾*/
|
public static void out(byte[] data,int length,Anchor anchor,String datafrom) {
|
if(socket==null) {
|
return;
|
}
|
|
if(anchor==null) {
|
BaoWenShow.ok("2", "TOANC","anchor=null", "",datafrom);
|
return;
|
}
|
String ip=anchor.getAnc_ip();
|
int port=anchor.getPort();
|
if(port<800) {
|
port=8233;
|
}
|
String anchorid=anchor.getAnc_id();
|
String datas1=Tools.Bytes2HexString(data);
|
if(ip==null) {
|
datas1=anchorid+"»ùվûÓмì²âµ½IP...\n";
|
BaoWenShow.ok("2", "TOANC",datas1, "",datafrom);
|
}else if(ip.length()<4 || port ==0){
|
datas1=anchorid+"erro:»ùÕ¾"+anchorid+"µØÖ·"+ip+"¶Ë¿Ú"+port;
|
BaoWenShow.ok("2", "TOANC",datas1, "",datafrom);
|
return;
|
}
|
|
DatagramPacket packet=null;
|
InetAddress address=null;
|
//Èç¹ûÊý¾ÝÀàÐÍÏàͬ
|
try {
|
address=InetAddress.getByName(ip);
|
} catch (UnknownHostException e) {
|
e.printStackTrace();
|
}
|
packet=new DatagramPacket(data, length, address, port);
|
|
try {
|
socket.send(packet);
|
String datas=Tools.Bytes2HexString(data).substring(0, packet.getLength()*2);
|
BaoWenShow.ok("2", "TOANC",datas, "",datafrom);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
|
|
|
/**ʵÏÖUDPת·¢
|
* @param data ÐèҪת·¢µÄÊý¾Ý
|
* @param lenthÐèҪת·¢µÄÊý¾Ý³¤¶È
|
* @param ipת·¢µØÖ·
|
* @param ports¶Ë¿Ú
|
* @throws IOException */
|
public static void udp_serch(byte[] data,int length,String ip,String ports) {
|
|
InetAddress address=null;
|
int port=Integer.parseInt(ports);
|
|
try {
|
address=InetAddress.getByName(ip);
|
} catch (UnknownHostException e) {
|
ShowMessage.zidingyi_24("UDPδ֪µØÖ·Òì³£:"+ip);
|
}
|
DatagramPacket packet=new DatagramPacket(data, length, address, port);
|
|
try {
|
socket.send(packet);
|
String datastr=Tools.Bytes2HexString(data);
|
S2Manage.get_text_area().append("·¢£º"+ip+":"+port+","+datastr+","+GetNowTime.now()+"\n");
|
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
static public void dell_serchanchor(String datas,String ip2,int port,int lenth,DatagramPacket packet) {
|
if(Dell_Wifi.isDellwifi()) {
|
String datastr=new String(packet.getData(), 0, lenth);
|
if(datastr.equals("+ok")) {
|
datastr=datastr.replace("+ok", "³É¹¦£¡");
|
}
|
WifiMange.get_text_area().append("ÊÕ:"+ip2+":"+port+","+datastr+"\n");
|
WifiMange.get_text_area().setCaretPosition(WifiMange.get_text_area().getText().length());
|
Dell_Wifi.dell_message(datastr);
|
|
}else {
|
S2Manage.get_text_area().append("ÊÕ:"+ip2+":"+port+","+datas+"\n");
|
S2Manage.get_text_area().setCaretPosition(S2Manage.get_text_area().getText().length());
|
if(datas.startsWith("FF24")) {
|
DellS2.serch_fanhui(datas);
|
}else if(datas.equals("FF01024B")){
|
ShowMessage.zidingyi("ÖØÆôÉ豸³É¹¦");
|
}else if(datas.equals("FF010250")){
|
ShowMessage.zidingyi("ÖØÆôÉ豸Óû§ÃûÃÜÂë´íÎó");
|
}else if(datas.equals("FF010550")){
|
ShowMessage.zidingyi("»ù´¡²ÎÊýÉèÖÃÓû§ÃûÃÜÂë´íÎó");
|
}else if(datas.equals("FF010650")){
|
ShowMessage.zidingyi("ÖØÆôÉ豸Óû§ÃûÃÜÂë´íÎó");
|
}else if(datas.equals("FF01064B")){
|
ShowMessage.zidingyi("±£´æ³É¹¦£¡");
|
}else{
|
DellS2.dell_readpeiz(datas);
|
}
|
}
|
}
|
|
/**½«Êý¾Ý·¢¸ø»ùÕ¾±äµçվģʽ*/
|
public static void biandianzout(byte[] data,int length,String ip) {
|
DatagramPacket packet=null;
|
InetAddress address=null;
|
//Èç¹ûÊý¾ÝÀàÐÍÏàͬ
|
try {
|
address=InetAddress.getByName(ip);
|
} catch (UnknownHostException e) {
|
e.printStackTrace();
|
}
|
packet=new DatagramPacket(data, length, address, 8233);
|
|
try {
|
socket.send(packet);
|
String datas=Tools.Bytes2HexString(data).substring(0, packet.getLength()*2);
|
BaoWenShow.show(datas, "UDPת·¢","Ñ¡Ôñ±êÇ©");
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* ½ÓÊÕÊý¾Ý°ü
|
* @param ds Á¬½Ó
|
* @return Êý¾Ý°ü
|
* @throws IOException
|
*/
|
public static int getRecDat() throws IOException {
|
byte[] dat = new byte[1];
|
DatagramPacket dp = new DatagramPacket(dat, 1);
|
socket.receive(dp);
|
return dat[0] & 0xff;
|
}
|
|
|
public static int getUdpbaowenmun() {
|
return udpbaowenmun;
|
}
|
|
|
|
}
|