#
whycq
2024-08-14 8a340545d76af29dd85d4be2812353294d236011
app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java
@@ -3,11 +3,21 @@
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 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 +29,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 +37,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 +45,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,6 +81,8 @@
        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");