netty、javafx-启动服务端,随时监听是否有消息过来

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    scanHandler=new ScanNettyServerHandler();
                    new scanNettyServer(10001,scanHandler).run();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                System.out.println("启动scanNettyServer成功,端口1001");
            }
        }).start();

        final String[] juegeMark = {""};
        new Timer(false).schedule(new TimerTask() {
            @Override
            public void run() {
                if((!"未认证".equals(scanHandler.getNettyMsg()))){
                    if(!"getMonkey".equals(scanHandler.getNettyMsg())){

                        if("".equals(juegeMark[0]) || (!juegeMark[0].equals(scanHandler.getNettyMsg()))){
                            String msg=scanHandler.getNettyMsg();
                            Platform.runLater(new Runnable() {
                                @Override
                                public void run() {
                                    search.setText(msg.trim());
                                    doSearchAction(null);
                                    juegeMark[0] =msg;
                                }
                            });
                        }
                    }
                }
            }
        },10000,1000);

serverhandler代码

package sample.netty;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.CharsetUtil;

import java.io.IOException;

public class ScanNettyServerHandler extends ChannelInboundHandlerAdapter { // (1)

    Boolean validStr = false;
    String acceptedMsg = "";

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) { // (2)
        ByteBuf byteBuf = (ByteBuf) msg;
        System.out.println("客户端发来的消息:" + byteBuf.toString(CharsetUtil.UTF_8));
        acceptedMsg = byteBuf.toString(CharsetUtil.UTF_8);
        if (byteBuf.toString(CharsetUtil.UTF_8).equals("getMonkey")) {
            validStr = true;
            System.out.println("客户端认证成功");
        }
    }

    //数据读取完毕事件
    public void channelReadComplete(ChannelHandlerContext ctx) throws IOException, InterruptedException {
        //数据读取完毕,将信息包装成一个Buffer传递给下一个Handler,Unpooled.copiedBuffer会返回一个Buffer
        //调用的是事件处理器的上下文对象的writeAndFlush方法
        //意思就是说将  你好  传递给了下一个handler
//            ctx.writeAndFlush(Unpooled.copiedBuffer("你好,服务端已经读取消息完成!", CharsetUtil.UTF_8));
        if (validStr) {
            ctx.writeAndFlush(Unpooled.copiedBuffer("你好,服务端已经读取消息完成!", CharsetUtil.UTF_8));
        } else {
            ctx.writeAndFlush(Unpooled.copiedBuffer("客户端未认证", CharsetUtil.UTF_8));
        }
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { // (4)
        // Close the connection when an exception is raised.
        cause.printStackTrace();
        ctx.close();
    }

    public String getNettyMsg() {
        if (validStr) {
            return acceptedMsg;
        } else {
            return "未认证";
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值