package com.hxzkoa.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; /**本类用于发送数据给基站配置基站的相关信息修改基站IP端口等操作*/ public class UDPToAnchor implements Runnable { static boolean starorstop=true; static DatagramSocket socket =null; static DatagramPacket packet=null; static InetAddress address=null; static int i=0; static int port; static { try { socket =new DatagramSocket(); } catch (SocketException e) { e.printStackTrace(); } } /**实现UDP转发 * @param data 需要转发的数据 * @param lenth需要转发的数据长度 * @param ip转发地址 * @param ports端口 * @throws IOException */ public static void udp_out(byte[] data,int length,String ip,String ports) { if(i==0) { i=1; new UDPToAnchor().startThread(); } port=Integer.parseInt(ports); try { address=InetAddress.getByName(ip); } catch (UnknownHostException e) { //ShowMessage.zidingyi_24("UDP未知地址异常:"+ip); } packet=new DatagramPacket(data, length, address, port); try { socket.send(packet); String datastr=new String(packet.getData(), 0, packet.getLength()); //WifiMange.get_text_area().append(ip+":"+port+"-> "+datastr+" ; "+GetNowTime.now()+"\n"); } catch (IOException e) { e.printStackTrace(); } } /**启动线程的方法*/ public void startThread() { Thread t=new Thread(this); t.start(); } public void run() { while(true) { if(socket !=null) { byte[] data = new byte[1024]; // 创建byte数组 DatagramPacket packet2= new DatagramPacket(data, data.length); // 接收数据包没有可以接收数据将阻塞,一直等数据 try { socket.receive(packet2); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } byte[] byt=packet2.getData(); //获取发送端的IP地址对象 String ip=packet.getAddress().getHostAddress(); String datas=Tools.Bytes2HexString(byt).substring(0, packet2.getLength()*2); String datastr=new String(packet2.getData(), 0, packet2.getLength()); if(Dell_Wifi.isDellwifi()) { if(datastr.equals("+ok")) { datastr=datastr.replace("+ok", "成功!"); } //WifiMange.get_text_area().append(ip+" 收: "+datastr+"\n"); //WifiMange.get_text_area().setCaretPosition(WifiMange.get_text_area().getText().length()); Dell_Wifi.dell_message(datastr); }else { //S2Manage.get_text_area().append(ip+" 收: "+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_24("重启设备成功"); }else if(datas.equals("FF010250")){ //ShowMessage.zidingyi_24("重启设备用户名密码错误"); }else if(datas.equals("FF010550")){ //ShowMessage.zidingyi_24("基础参数设置用户名密码错误"); }else if(datas.equals("FF010650")){ //ShowMessage.zidingyi_24("重启设备用户名密码错误"); }else if(datas.equals("FF01064B")){ //ShowMessage.zidingyi("保存成功!"); }else{ DellS2.dell_readpeiz(datas); } } } } } public static void setStarorstop(boolean starorstop) { UDPToAnchor.starorstop = starorstop; } }