From 1eb6c8b77d99bb43437a974787baea33dc67253c Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期三, 14 八月 2024 17:01:21 +0800 Subject: [PATCH] # --- app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java | 41 ++++++++++++++++++++++++++++------------- 1 files changed, 28 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java b/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java index 13abdea..1bcb965 100644 --- a/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java +++ b/app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java @@ -3,11 +3,22 @@ import java.nio.charset.StandardCharsets; import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import android.util.Log; + +import com.example.agvcontroller.Item; +import com.example.agvcontroller.protocol.AgvAction; + + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.Arrays; import java.util.concurrent.ConcurrentHashMap; public class NettyServerHandler extends ChannelInboundHandlerAdapter { @@ -19,6 +30,7 @@ public void channelActive(ChannelHandlerContext ctx) throws Exception { String clientId = ctx.channel().remoteAddress().toString(); channelMap.put(clientId, ctx.channel()); + EventBus.getDefault().post(new Item("1",clientId,"3")); Log.d(TAG, "Client connected: " + clientId); } @@ -26,6 +38,7 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception { String clientId = ctx.channel().remoteAddress().toString(); channelMap.remove(clientId); + EventBus.getDefault().post(clientId); Log.d(TAG, "Client disconnected: " + clientId); } @@ -33,19 +46,6 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { // 澶勭悊鎺ユ敹鍒扮殑娑堟伅 ByteBuf byteBuf = (ByteBuf) msg; - //byte[] data = new byte[byteBuf.readableBytes()]; - //byteBuf.readBytes(data); - //String received = new String(data, StandardCharsets.UTF_8); - //System.out.println("Received from client: " + received); - // - //// 鍥炲娑堟伅 - ////ByteBuf response = Unpooled.copiedBuffer("Response from server", StandardCharsets.UTF_8); - ////ctx.writeAndFlush(response); - // - //byte[] responseHex = hexStringToByteArray("48656c6c6f20576f726c64"); // "Hello World" in hex - //ByteBuf response = Unpooled.wrappedBuffer(responseHex); - //ctx.writeAndFlush(response); - try { while (byteBuf.isReadable()) { byte[] bytes = new byte[byteBuf.readableBytes()]; @@ -82,12 +82,27 @@ Channel channel = channelMap.get(clientId); if (channel != null && channel.isActive()) { ByteBuf buf = Unpooled.wrappedBuffer(message); + String upperCase = ByteBufUtil.hexDump(buf).toUpperCase(); + Log.d(TAG, "upperCase " + upperCase); channel.writeAndFlush(buf); } else { Log.d(TAG, "Client " + clientId + " is not connected"); } } + public static void sendMessageToClient(String clientId, AgvAction<?> action) { + + + + Channel channel = channelMap.get(clientId); + if (channel != null && channel.isActive()) { + + channel.writeAndFlush(action); + } else { + Log.d(TAG, "Client " + clientId + " is not connected"); + } + } + @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { cause.printStackTrace(); -- Gitblit v1.9.1