我正在嘗試從服務器發送和接收消息。服務器已建立在遠程環境中。服務器有一些特定的信號代碼,例如:這些代碼作為字節發送。在這一點上,問題開始了。當客戶端與服務器連接時,服務器立即發送 100000050 并在幾毫秒后發送 10000051。我應該在收到 10000051 后發送 10000060 但我不知道如何發送??蛻舳?JAVApublic static void main(String[] args) throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap clientBootstrap = new Bootstrap(); clientBootstrap.group(group); clientBootstrap.channel(NioSocketChannel.class); clientBootstrap.remoteAddress(new InetSocketAddress("10.80.15.70", 55102)); clientBootstrap.handler(new ChannelInitializer<SocketChannel>() { protected void initChannel(SocketChannel socketChannel) throws Exception { socketChannel.pipeline().addLast(new ClientHandler()); } }); ChannelFuture channelFuture = clientBootstrap.connect().sync(); channelFuture.channel().closeFuture().sync(); } finally { group.shutdownGracefully().sync(); } }客戶端處理程序.JAVApublic class ClientHandler extends SimpleChannelInboundHandler<ByteBuf> { private static final Logger LOGGER = Logger.getLogger( ClientHandler.class.getName() ); @Override public void channelActive(ChannelHandlerContext channelHandlerContext){ //System.out.println("\nhelloo"); //channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer("Netty Rocks!", CharsetUtil.UTF_8)); byte [] test = new byte[9]; test[0] = 0; test[1] = 6; test[2] = 0; test[3] = 0; test[4] = 0; test[5] = 0; test[6] = 0; test[7] = 0; test[8] = 1; //byte [] message = "100000060".getBytes(); channelHandlerContext.writeAndFlush(test); } @Override public void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf in) { System.out.println("Client received: " + in.toString(CharsetUtil.UTF_8)); }
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
您可以通過更新您的channelRead0方法來檢查收到的消息,然后在收到您正在尋找的消息時回復。
@Override
public void channelRead0(ChannelHandlerContext channelHandlerContext, ByteBuf in) {
String message = in.toString(CharsetUtil.UTF_8);
if (message.equals("10000051")) { //Now do what you were doing in channel active
byte [] test = new byte[9];
test[0] = 0;
test[1] = 6;
test[2] = 0;
test[3] = 0;
test[4] = 0;
test[5] = 0;
test[6] = 0;
test[7] = 0;
test[8] = 1;
//byte [] message = "100000060".getBytes();
channelHandlerContext.writeAndFlush(test);
}
}
添加回答
舉報
0/150
提交
取消