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;
|
}
|
|
|
}
|