📄 deviceudpservice.java
字号:
package com.gps.center.dataservice;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import java.io.File;
import org.w3c.dom.NodeList;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.io.IOException;
import com.gps.center.baseclass.MsgObj;
import com.gps.center.baseclass.ParseData;
public class DeviceUdpService extends ParseData implements Runnable {
private int DevicePort = 0;
private String DeviceIP = "localhost";
public DatagramSocket udpServer;
public DeviceUdpService() {
readxml();
initializeOperations();
}
public void run() {
try {
while (super.openservice) {
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length); //创建一个DatagramPacket接收数据
udpServer.receive(dp);//接收
String rcvd = dp.toString().trim();
if (rcvd.length() > 1) {
MsgObj msg = new MsgObj();
//cMsgtype:1--TCPMSG,2--DEVICEUDPMSG,3--SMSMSG
//4--TCPSENDTODEVICE,5--UDPSENDTODEVICE,6--SMSSENDTODEVICE,7--TCPSENDTOTERMINAL,8--TCPRETURNTERMINAL
msg.cMsgType = DEVICEUDPMSG;
msg.cMsg = rcvd;
msg.cDeviceAdd = dp.getAddress();
msg.cUdpPort = dp.getPort();
msg.cUdpSocket = udpServer;
super.addRecieveMsg(msg);//添加到接收队列
}
}
} catch (IOException e) {
System.err.println("Communication error!");
e.printStackTrace();
}
}
public void initializeOperations() {//初始化UDP-Socket
InetAddress ia = null;
try {
ia = InetAddress.getByName(DeviceIP); //
} catch (UnknownHostException ex) {
ex.printStackTrace();
System.exit( -1);
}
try {
udpServer = new DatagramSocket(DevicePort, ia);
} catch (SocketException ex1) {
udpServer.close();
ex1.printStackTrace();
System.exit( -1);
}
}
private void readxml() {
String strport;
try {
File f = new File("CenterInfo.xml");
if (f.exists()) {
DocumentBuilderFactory factory = DocumentBuilderFactory.
newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("Center");
for (int i = 0; i < nl.getLength(); i++) {
strport = (doc.getElementsByTagName("CenterPort").item(i).
getFirstChild().
getNodeValue()).trim();
DeviceIP = (doc.getElementsByTagName("CenterIP").item(i).
getFirstChild().
getNodeValue()).trim();
try {
if (strport.length() > 0) {
DevicePort = Integer.parseInt(strport);
} else {
System.out.println("centerPort err");
System.exit( -1);
}
} catch (Exception e) {
System.out.println("centerPort and MaxDevice err");
}
}
} else {
System.out.println("no find file:CenterInfo.xml");
System.exit( -1);
}
} catch (Exception e) {
e.printStackTrace();
System.exit( -1);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -