java 创建socket_Java后台创建Socket服务接收硬件终端发送的数据

@Overridepublic voidstart() {

ExecutorService pool=Executors.newCachedThreadPool();try{if(enable) {return;

}

enable= true;

serverSocket=newServerSocket(port);

Socket socket= null;

BufferedInputStream reader= null;

BufferedOutputStream writer= null;while(enable) {try{

socket=serverSocket.accept();//阻塞方法

socket.setSoTimeout(100000);//start byte example

reader = newBufferedInputStream(socket.getInputStream());

writer= newBufferedOutputStream(socket.getOutputStream());int totalChar = 84;byte[] body = new byte[totalChar];int len = reader.read(body, 0, 84);if (len

logger.error("收到包ERROR: " + new String(body, "UTF-8") + " 长度: " +len);

logger.info("收到包ERROR: " +ByteUtil.bytesToBit(body));

logger.info(ByteUtil.parseByte2HexStr(body));if (null != socket && !socket.isClosed()) {

socket.close();

}continue;

}else{

logger.info("收到包: " + new String(body, "UTF-8"));

logger.info(ByteUtil.bytesToBit(body));

logger.info(ByteUtil.parseByte2HexStr(body));

}

T409_car_collects dbcollect= new T409_car_collects(); //硬件数据存储在这个对象中

byte[] idBytes = new byte[17];

System.arraycopy(body,0, idBytes, 0, 17);

String id= newString(idBytes);

dbcollect.setTerminalid(id);//TODO

}catch(Exception e) {

logger.error("Parse socket error. ", e);if (null != socket && !socket.isClosed()) {

socket.close();

}

}

}

}catch(IOException e) {

logger.error("", e);

}finally{

pool.shutdown();

}

}

@Overridepublic voidstop() {

enable= false;if (null != serverSocket && !serverSocket.isClosed()) {try{

serverSocket.close();

}catch(IOException e) {

logger.error("close serverSocket err.", e);

}

}

}class Handler implementsRunnable {privateT409_car_collects collect;privateSocket socket;

Handler(T409_car_collects collect, Socket socket) {this.collect =collect;this.socket =socket;

}

@Overridepublic voidrun() {//TODO

System.out.println("serv handler: "+collect.getRemark());

logger.error(MessageFormat.format("Terminalid {0} is not exist.", collect.getTerminalid()));

T410_car_collects_log collect_log= newT410_car_collects_log();

BeanUtils.copyProperties(collect,collect_log);

BeanUtils.copyProperties(collect_log,collect);

t410_car_collects_logMapper.insertSelective(collect_log);

List ext =carownerService.getcar_runningdatabyterminalid(collect.getTerminalid());if(ext ==null){

t409_car_collectsMapper.insertSelective(collect);

}else{

collect.setId(ext.get(0).getId());

Date now= newDate();

collect.setUpdatetime(now);

t409_car_collectsMapper.updateByPrimaryKeySelective(collect);

}try{

PrintWriter pw= new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"),true);

pw.println("back to client.");

pw.flush();

}catch(Exception e) {

logger.error("send back socket client err.", e);

}finally{try{

socket.close();

}catch(IOException e) {

logger.error("close socket err.", e);

}

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值