From 3b190857175620dfba391c211cabf9e843d3e235 Mon Sep 17 00:00:00 2001 From: qmstyle Date: Thu, 27 Feb 2025 12:22:38 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B42=E6=9C=8827=E6=97=A512:22:05=20so?= =?UTF-8?q?kcet=20=E8=BF=9E=E6=8E=A5=E6=96=AD=E5=BC=80=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhangmeng/service/impl/DataPackImpl.java | 12 ++++++++++ .../zhangmeng/service/impl/HelloRouter.java | 4 ++-- .../zhangmeng/service/impl/MsgHandleImpl.java | 14 +++++++---- .../zhangmeng/service/impl/RequestImpl.java | 5 +++- src/test/java/com/zhangmeng/AppTest.java | 24 +++++++++---------- 5 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/zhangmeng/service/impl/DataPackImpl.java b/src/main/java/com/zhangmeng/service/impl/DataPackImpl.java index 4de4891..a41c2df 100644 --- a/src/main/java/com/zhangmeng/service/impl/DataPackImpl.java +++ b/src/main/java/com/zhangmeng/service/impl/DataPackImpl.java @@ -34,6 +34,7 @@ public class DataPackImpl implements DataPack { dataMsg.setSequenceId(0); dataMsg.setData(msg.GetData()); dataMsg.setDataLen(msg.GetDataLen()); + dataMsg.setMsgId(msg.GetMsgId()); try { ByteBuf out = Unpooled.buffer(); @@ -93,6 +94,7 @@ public class DataPackImpl implements DataPack { Message message = new MessageImpl(); message.SetData(dataMsg.getData()); message.SetDataLen(dataMsg.getDataLen()); + message.SetMsgId(dataMsg.getMsgId()); return message; } catch (IOException | ClassNotFoundException e) { // throw new RuntimeException(e); @@ -107,6 +109,16 @@ public class DataPackImpl implements DataPack { private byte[] data; private int dataLen; + private int msgId; + + public int getMsgId() { + return msgId; + } + + public void setMsgId(int msgId) { + this.msgId = msgId; + } + public int getSequenceId() { return sequenceId; } diff --git a/src/main/java/com/zhangmeng/service/impl/HelloRouter.java b/src/main/java/com/zhangmeng/service/impl/HelloRouter.java index c960bbf..4a06c30 100644 --- a/src/main/java/com/zhangmeng/service/impl/HelloRouter.java +++ b/src/main/java/com/zhangmeng/service/impl/HelloRouter.java @@ -19,12 +19,12 @@ public class HelloRouter extends BaseRouterImpl { @Override public void Handle(Request request) { - log.info("Call HelloZinxRouter Handle"); + log.info("Call HelloRouter Handle"); //先读取客户端的数据,再回写ping...ping...ping log.info("recv from client : msgId={}, data={}", request.GetMsgID(), new String(request.GetData(), StandardCharsets.UTF_8)); try { OutputStream outputStream = request.GetConnection().GetTCPConnection().getOutputStream(); - ByteBufferUtil.sendMsg(1, "Hello Zinx Router V0.6".getBytes(), outputStream); + ByteBufferUtil.sendMsg(1, "Hello Router V0.6".getBytes(), outputStream); } catch (IOException e) { e.printStackTrace(); } diff --git a/src/main/java/com/zhangmeng/service/impl/MsgHandleImpl.java b/src/main/java/com/zhangmeng/service/impl/MsgHandleImpl.java index bceedae..95b0e6d 100644 --- a/src/main/java/com/zhangmeng/service/impl/MsgHandleImpl.java +++ b/src/main/java/com/zhangmeng/service/impl/MsgHandleImpl.java @@ -22,12 +22,16 @@ public class MsgHandleImpl implements MsgHandle { @Override public void DoMsgHandler(Request request) { + if (request != null){ + Router handler = this.apis.get(request.GetMsgID()); + if (handler != null ){ + //执行对应处理方法 + handler.PreHandle(request); + handler.Handle(request); + handler.PostHandle(request); + } + } - Router handler = this.apis.get(request.GetMsgID()); - //执行对应处理方法 - handler.PreHandle(request); - handler.Handle(request); - handler.PostHandle(request); } @Override diff --git a/src/main/java/com/zhangmeng/service/impl/RequestImpl.java b/src/main/java/com/zhangmeng/service/impl/RequestImpl.java index 63a65f1..95aba29 100644 --- a/src/main/java/com/zhangmeng/service/impl/RequestImpl.java +++ b/src/main/java/com/zhangmeng/service/impl/RequestImpl.java @@ -47,6 +47,9 @@ public class RequestImpl implements Request { } public int GetMsgID() { - return this.message.GetMsgId(); + if (this.message != null) { + return this.message.GetMsgId(); + } + return -1; } } diff --git a/src/test/java/com/zhangmeng/AppTest.java b/src/test/java/com/zhangmeng/AppTest.java index 59ff245..998f4db 100644 --- a/src/test/java/com/zhangmeng/AppTest.java +++ b/src/test/java/com/zhangmeng/AppTest.java @@ -1,5 +1,7 @@ package com.zhangmeng; +import com.zhangmeng.utils.ByteBufferUtil; + import java.io.*; import java.net.InetAddress; import java.net.Socket; @@ -22,22 +24,20 @@ public class AppTest { //创建 Socket 对象,指定服务器端的 IP 与端口 socket = new Socket(InetAddress.getLocalHost(), 9999); //获取 scoket 的输入输出流接收和发送信息 - in = new BufferedReader(new InputStreamReader(socket.getInputStream())); - out = new BufferedWriter(new - OutputStreamWriter(socket.getOutputStream())); + OutputStream outputStream = socket.getOutputStream(); + InputStream inputStream = socket.getInputStream(); + //获取 scoket 的输入输出流接收和发送信息 + in = new BufferedReader(new InputStreamReader(inputStream)); + out = new BufferedWriter(new OutputStreamWriter(outputStream)); br = new BufferedReader(new InputStreamReader(System.in)); + while (true) { //发送信息 String str = br.readLine(); - out.write(str + "\n"); - out.flush(); - //如果输入的信息为“end”则终止连接 - if (str.equals("end")) { - break; - } - //否则,接收并输出服务器端信息 - System.out.println("服务器端说:" + in.readLine()); -// Thread.sleep(1000); + //发送信息 + ByteBufferUtil.sendMsg(0, str.getBytes(), outputStream); + //接收信息 + ByteBufferUtil.recvMsg(inputStream, -1); } } catch (UnknownHostException e) { e.printStackTrace();