From dfd97096a62285d26fd7e76e4fc5652580b374a8 Mon Sep 17 00:00:00 2001 From: fengjian Date: Thu, 27 Feb 2020 12:45:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/luckyclient/netty/ClientHandler.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/luckyclient/netty/ClientHandler.java b/src/main/java/luckyclient/netty/ClientHandler.java index 4a6dd30..f56d367 100644 --- a/src/main/java/luckyclient/netty/ClientHandler.java +++ b/src/main/java/luckyclient/netty/ClientHandler.java @@ -67,10 +67,10 @@ public class ClientHandler extends ChannelHandlerAdapter { }catch (Exception e) { - log.error("收到服务端非Json消息:"+jsonStr); + System.out.println("收到服务端非Json消息:"+jsonStr); return; } - log.info("收到服务端消息:"+json.toString()); + System.out.println("收到服务端消息:"+json.toString()); //解析消息 if("run".equals(json.get("method"))){ try { @@ -92,7 +92,7 @@ public class ClientHandler extends ChannelHandlerAdapter { try { tmpResult=HttpRequest.httpClientGet(urlParam,jsonparams,socketTimeout); } catch (Exception e) { - log.error("转发服务端GET请求出错"); + System.out.println("转发服务端GET请求出错"); } } else @@ -102,7 +102,7 @@ public class ClientHandler extends ChannelHandlerAdapter { try { tmpResult=HttpRequest.httpClientPost(urlParam,jsonparams,socketTimeout); } catch (Exception e) { - log.error("转发服务端POST请求出错"); + System.out.println("转发服务端POST请求出错"); } } result.setMessage(tmpResult); @@ -125,7 +125,7 @@ public class ClientHandler extends ChannelHandlerAdapter { re.put("method","return"); re.put("data",result); sendMessage(re.toString()); - log.info("下载驱动包成功,路径为:"+path+";文件名为:"+fileName); + System.out.println("下载驱动包成功,路径为:"+path+";文件名为:"+fileName); } catch (Exception e) { e.printStackTrace(); //返回请求 @@ -134,7 +134,7 @@ public class ClientHandler extends ChannelHandlerAdapter { re.put("method","return"); re.put("data",result); sendMessage(re.toString()); - log.info("下载驱动包失败,路径为:"+path+";文件名为:"+fileName); + System.out.println("下载驱动包失败,路径为:"+path+";文件名为:"+fileName); } } @@ -149,7 +149,6 @@ public class ClientHandler extends ChannelHandlerAdapter { json.put("method","clientUp"); ClientHandler.ctx=ctx; sendMessage(json.toString()); - System.out.println("通道已连接,客户端登录消息已发送"); } @Override From 2a6e773b49e65cccf006464861955baf29979d6d Mon Sep 17 00:00:00 2001 From: fengjian Date: Sat, 29 Feb 2020 17:19:25 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=88=AA=E5=9B=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/luckyclient/netty/ClientHandler.java | 80 +++++++++++++++++-- .../luckyclient/netty/FileUploadFile.java | 58 ++++++++++++++ src/main/java/luckyclient/netty/Result.java | 13 ++- .../luckyclient/utils/config/SysConfig.java | 2 +- 4 files changed, 142 insertions(+), 11 deletions(-) create mode 100644 src/main/java/luckyclient/netty/FileUploadFile.java diff --git a/src/main/java/luckyclient/netty/ClientHandler.java b/src/main/java/luckyclient/netty/ClientHandler.java index f56d367..f6b4cd4 100644 --- a/src/main/java/luckyclient/netty/ClientHandler.java +++ b/src/main/java/luckyclient/netty/ClientHandler.java @@ -1,20 +1,16 @@ package luckyclient.netty; -import java.io.IOException; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.util.Map; import java.util.Properties; import java.util.concurrent.TimeUnit; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; - import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerAdapter; import io.netty.channel.ChannelHandlerContext; @@ -51,6 +47,15 @@ public class ClientHandler extends ChannelHandlerAdapter { private static final String SERVER_PORT= SysConfig.getConfiguration().getProperty("server.web.port"); + private int byteRead; + + private volatile int start = 0; + + private volatile int lastLength = 0; + + public RandomAccessFile randomAccessFile; + + private static ChannelHandlerContext ctx; public ClientHandler() throws IOException { @@ -77,7 +82,7 @@ public class ClientHandler extends ChannelHandlerAdapter { //返回请求 JSONObject re=new JSONObject(); re.put("method","return"); - Result result=new Result(1,"同步等待消息返回",json.get("uuid").toString()); + Result result=new Result(1,"同步等待消息返回",json.get("uuid").toString(),null); //如果是调度请求,则发起一个HTTP请求 //获取是get方法还是post方法 String getOrPost=json.get("getOrPost").toString(); @@ -121,7 +126,7 @@ public class ClientHandler extends ChannelHandlerAdapter { HttpRequest.downLoadFromUrl("http://"+SERVER_IP+":"+SERVER_PORT+"/common/download?fileName="+fileName,fileName,path); //返回请求 JSONObject re=new JSONObject(); - Result result=new Result(1,"上传成功",json.get("uuid").toString()); + Result result=new Result(1,"上传成功",json.get("uuid").toString(),null); re.put("method","return"); re.put("data",result); sendMessage(re.toString()); @@ -130,13 +135,72 @@ public class ClientHandler extends ChannelHandlerAdapter { e.printStackTrace(); //返回请求 JSONObject re=new JSONObject(); - Result result=new Result(0,"上传失败",json.get("uuid").toString()); + Result result=new Result(0,"上传失败",json.get("uuid").toString(),null); re.put("method","return"); re.put("data",result); sendMessage(re.toString()); System.out.println("下载驱动包失败,路径为:"+path+";文件名为:"+fileName); } } + else if("upload".equals(json.get("method"))) + { + //上传截图到服务器 + Map jsonparams = (Map)json.get("data"); + String fileName=jsonparams.get("imgName").toString(); + String ctxPath = System.getProperty("user.dir")+File.separator+"log"+File.separator+"ScreenShot"+File.separator+fileName; + File file=new File(ctxPath); + int start=Integer.valueOf(json.get("start").toString()); + FileUploadFile fileUploadFile=new FileUploadFile(); + fileUploadFile.setFile(file); + if (start != -1) { + try { + if(start==0) + lastLength = 1024 * 10; + randomAccessFile = new RandomAccessFile(fileUploadFile.getFile(), "r"); + randomAccessFile.seek(start); //将文件定位到start + System.out.println("长度:" + (randomAccessFile.length() - start)); + int a = (int) (randomAccessFile.length() - start); + int b = (int) (randomAccessFile.length() / 1024 * 2); + if (a < lastLength) { + lastLength = a; + } + System.out.println("文件长度:" + (randomAccessFile.length()) + ",start:" + start + ",a:" + a + ",b:" + b + ",lastLength:" + lastLength); + byte[] bytes = new byte[lastLength]; + System.out.println("bytes的长度是="+bytes.length); + if ((byteRead = randomAccessFile.read(bytes)) != -1 && (randomAccessFile.length() - start) > 0) { + System.out.println("byteRead = " + byteRead); + fileUploadFile.setEndPos(byteRead); + fileUploadFile.setBytes(bytes); + //返回请求 + JSONObject re=new JSONObject(); + Result result=new Result(1,"上传成功",json.get("uuid").toString(),fileUploadFile); + re.put("method","upload"); + re.put("data",result); + re.put("uuid",json.get("uuid").toString()); + sendMessage(re.toString()); + try { + ctx.writeAndFlush(fileUploadFile); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + randomAccessFile.close(); + System.out.println("文件已经读完channelRead()--------" + byteRead); + //返回请求 + JSONObject re=new JSONObject(); + Result result=new Result(1,"上传成功",json.get("uuid").toString(),null); + re.put("method","return"); + re.put("data",result); + sendMessage(re.toString()); + + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + + } } diff --git a/src/main/java/luckyclient/netty/FileUploadFile.java b/src/main/java/luckyclient/netty/FileUploadFile.java new file mode 100644 index 0000000..8dd8340 --- /dev/null +++ b/src/main/java/luckyclient/netty/FileUploadFile.java @@ -0,0 +1,58 @@ +package luckyclient.netty; + +import java.io.File; +import java.io.Serializable; + +public class FileUploadFile implements Serializable { + + private static final long serialVersionUID = 1L; + private File file;// 文件 + private String file_md5;// 文件名 + private int starPos;// 开始位置 + private byte[] bytes;// 文件字节数组 + private int endPos;// 结尾位置 + + public File getFile() { + return file; + } + + public void setFile(File file) { + this.file = file; + } + + public String getFile_md5() { + return file_md5; + } + + public void setFile_md5(String file_md5) { + this.file_md5 = file_md5; + } + + public int getStarPos() { + return starPos; + } + + public void setStarPos(int starPos) { + this.starPos = starPos; + } + + public byte[] getBytes() { + return bytes; + } + + public void setBytes(byte[] bytes) { + this.bytes = bytes; + } + + public int getEndPos() { + return endPos; + } + + public void setEndPos(int endPos) { + this.endPos = endPos; + } + + public static long getSerialversionuid() { + return serialVersionUID; + } +} \ No newline at end of file diff --git a/src/main/java/luckyclient/netty/Result.java b/src/main/java/luckyclient/netty/Result.java index 9fbfd5d..441c0c8 100644 --- a/src/main/java/luckyclient/netty/Result.java +++ b/src/main/java/luckyclient/netty/Result.java @@ -10,11 +10,20 @@ public class Result implements Serializable { private int code; private Object message; private String uniId; - - public Result(int code, Object message, String uniId) { + private FileUploadFile fileUploadFile; + public Result(int code, Object message, String uniId,FileUploadFile fileUploadFile) { this.code = code; this.message = message; this.uniId = uniId; + this.fileUploadFile=fileUploadFile; + } + + public FileUploadFile getFileUploadFile() { + return fileUploadFile; + } + + public void setFileUploadFile(FileUploadFile fileUploadFile) { + this.fileUploadFile = fileUploadFile; } public int getCode() { diff --git a/src/main/java/luckyclient/utils/config/SysConfig.java b/src/main/java/luckyclient/utils/config/SysConfig.java index ca54847..cd7d8b2 100644 --- a/src/main/java/luckyclient/utils/config/SysConfig.java +++ b/src/main/java/luckyclient/utils/config/SysConfig.java @@ -17,7 +17,7 @@ public class SysConfig { static{ try { InputStream in = new BufferedInputStream(SysConfig.class.getResourceAsStream(SYS_CONFIG_FILE)); - SYS_CONFIG.load(new InputStreamReader(in, "UTF-8")); + SYS_CONFIG.load(new InputStreamReader(in, "GBK")); } catch (IOException e) { e.printStackTrace(); } From dedf939c765c870122e0bdbb73f4aead66083973 Mon Sep 17 00:00:00 2001 From: fengjian Date: Sat, 29 Feb 2020 17:22:44 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E6=88=AA=E5=9B=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/luckyclient/netty/ClientHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/luckyclient/netty/ClientHandler.java b/src/main/java/luckyclient/netty/ClientHandler.java index f6b4cd4..d1a547a 100644 --- a/src/main/java/luckyclient/netty/ClientHandler.java +++ b/src/main/java/luckyclient/netty/ClientHandler.java @@ -19,6 +19,7 @@ import io.netty.handler.timeout.IdleState; import io.netty.handler.timeout.IdleStateEvent; import luckyclient.utils.config.SysConfig; + public class ClientHandler extends ChannelHandlerAdapter { //从application.properties文件中获取用到的参数;