java 打卡器程序_java 与打卡器通过udp协议交互

packagecom.as.util;importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;importjava.net.InetSocketAddress;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjava.util.TimerTask;importjava.util.concurrent.CountDownLatch;importtimetrigger.JDBC1;importcom.as.bean.Schedule;importcom.as.bean.SearchCardRecordBean;/*** 用来监听读卡器的主类

*

*@authorwangqing

**/

public class OpenCrMain extendsTimerTask {private static InetSocketAddress socketAddress = null; //服务监听地址

private static DatagramSocket datagramSocket = null; //连接对象

public static String ServiceIp = "192.168.2.101";public static int ServicePort = 32500;public static List sendIpList = new ArrayList();privateSchedule schedule;static List scrb = new ArrayList();//被怀疑迟到的人

publicOpenCrMain(Schedule schedule) {this.schedule =schedule;

}/*** 初始化连接

*@throwsSocketException*/

public static voidinit() {try{

socketAddress= newInetSocketAddress(ServiceIp, ServicePort);

datagramSocket= newDatagramSocket(socketAddress);

datagramSocket.setSoTimeout(60 * 1000);

System.out.println("服务端已经启动");

}catch(Exception e) {

datagramSocket= null;

System.err.println("服务端启动失败");

e.printStackTrace();

}

}

@Overridepublic voidrun() {

openCrAndReadIt();

}/*** 接收数据包,该方法会造成线程阻塞

*@return*@throwsException

*@throwsIOException*/

public synchronized staticDatagramPacket receive(DatagramPacket packet)throwsException {try{

datagramSocket.receive(packet);returnpacket;

}catch(Exception e) {

System.out.println("抛出异常");throwe;

}

}/*** 将响应包发送给请求端

*@parambt

*@throwsIOException*/

public synchronized static voidresponse(DatagramPacket packet) {try{

datagramSocket.send(packet);

}catch(Exception e) {

e.printStackTrace();

}

}/*** 打开读卡器并分析数据*/

public synchronized voidopenCrAndReadIt() {try{

scrb= newJDBC1().searchDoubtLate(schedule.getScheduleID(),

schedule.getBeginTime(), schedule.getEndTime());//得出某个特定的班缺勤嫌疑人人员列表

for (int i = 0; i < scrb.size(); i++) {

scrb.get(i).setSearchResult("未找到");

}

init();byte[] buffer = new byte[1024 * 64]; //缓冲区

List iplist=new ArrayList();

iplist.add("192.168.2.202");

CountDownLatch threadSignal= new CountDownLatch(iplist.size());//初始化countDown

for(String string : iplist) {

DatagramPacket packet= new DatagramPacket(buffer, buffer.length,InetAddress.getByName(string),32500);//开启线程对数据进行分析

newAnalysisDataFromCr(threadSignal,packet).start();

}

threadSignal.await();//等待所有子线程执行完

datagramSocket.close();for(int i=0;i

System.out.println(scrb.get(i).getSerial_Nr());

}new JDBC1().add1(scrb);//匹配完后把结果添加到数据库中

System.out.println("添加完成");

}catch(Exception e) {

System.out.println("抛出异常");

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值