|
|
@@ -1,99 +0,0 @@
|
|
|
-package com.zd.modules.monitor.config;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-
|
|
|
-import java.io.BufferedInputStream;
|
|
|
-import java.io.DataInputStream;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.OutputStream;
|
|
|
-import java.net.Socket;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Scanner;
|
|
|
-import java.util.Set;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
-
|
|
|
-/**
|
|
|
- * @author dgs
|
|
|
- * socket服务器配置类
|
|
|
- */
|
|
|
-public class TCPServer implements Runnable {
|
|
|
-
|
|
|
- private static final Logger log = LoggerFactory.getLogger(TCPServer.class);
|
|
|
-
|
|
|
- private Socket socket;
|
|
|
-
|
|
|
- public TCPServer(Socket socket) {
|
|
|
- this.socket = socket;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- // 设置连接超时90秒
|
|
|
- try {
|
|
|
- socket.setSoTimeout(50000);
|
|
|
- log.info("客户 - " + socket.getRemoteSocketAddress() + " -> 机连接成功"+" "+"Thread名称:" + Thread.currentThread().getName()+" "+"Thread数量:" + Thread.activeCount());
|
|
|
- while (true) {
|
|
|
- handle();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- log.info("Socket异常: " + socket.getRemoteSocketAddress()+" "+e.getMessage());
|
|
|
- }finally {
|
|
|
- try {
|
|
|
- if (!socket.isClosed()) {
|
|
|
- log.info("客户 - " + socket.getRemoteSocketAddress() + " -> 链接中断");
|
|
|
- //socket.close();
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void handle() throws IOException {
|
|
|
- StringBuilder ret = new StringBuilder();
|
|
|
- // 解析二进制数据
|
|
|
- BufferedInputStream bs = new BufferedInputStream(socket.getInputStream());
|
|
|
- DataInputStream dis = new DataInputStream(bs);
|
|
|
-
|
|
|
- byte[] bytes = new byte[1024];
|
|
|
- while (dis.readBoolean() && dis.read(bytes) != -1){
|
|
|
- ret.append(new String(bytes));
|
|
|
- if(dis.available() == 0){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- String data = ret.toString();
|
|
|
- log.info("接收数据:" + data + "," + socket.getRemoteSocketAddress());
|
|
|
- synchronized(this) {
|
|
|
- CacheUtils.cacheMap.put(data.trim(),socket);
|
|
|
- CacheUtils.mStringThreadLocal.set((Map<String, Socket>) new ConcurrentHashMap<>().put(data.trim(),socket));
|
|
|
- }
|
|
|
- OutputStream out=socket.getOutputStream();
|
|
|
- Scanner input=new Scanner(System.in);
|
|
|
- String returnData=input.nextLine()+socket.getRemoteSocketAddress()+"应答";
|
|
|
- out.write(returnData.getBytes());
|
|
|
- out.flush();
|
|
|
- //out.close();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // 二进制转字符串
|
|
|
- public static String byte2hex(byte[] b) {
|
|
|
- StringBuffer sb = new StringBuffer();
|
|
|
- String tmp = "";
|
|
|
- for (int i = 0; i < b.length; i++) {
|
|
|
- tmp = Integer.toHexString(b[i] & 0XFF);
|
|
|
- if (tmp.length() == 1){
|
|
|
- sb.append("0" + tmp);
|
|
|
- }else{
|
|
|
- sb.append(tmp);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- return sb.toString();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-}
|