gpt4 book ai didi

java - 使用netty动态传输数据

转载 作者:行者123 更新时间:2023-12-01 12:08:12 24 4
gpt4 key购买 nike

我学习Netty有一段时间了,从Netty的教程(MEAP书)来看,几乎所有的例子都是基于固定的框架,比如EventLoopBootstrap,看来只有channelPipeline中处理程序的实现才是我们真正应该关心的事情。

在这里,我想设计一个简单的国际象棋游戏,基于服务器/客户端模式,其中两个玩家位于不同的计算机上。而后台数据我想用Netty来传输。(我只是想练习使用netty)

在这样的游戏中,前端 GUI 检测到玩家放置了棋子,然后对数据进行一些更改。然后,我需要将这些数据传递给其他玩家。那么问题来了。

我不知道在这种情况下如何实现ChannelHandler,因为在大多数示例中,数据似乎不是由处理程序动态添加的。例如,数据是在 channel 处于 Activity 状态时通过方法 channelActive() 或其他方法创建的。所有这些方法都是 Netty 本身自动调用的。

我认为唯一的方法是write()。不过,好像实现这个方法就得自己调用这个方法了,不知道从哪里获取参数ChannelHandlerContext

那么,这样的问题该如何解决呢?

<小时/>

附:我对java网络编程不太熟悉,对Netty也不太熟悉。我学到的所有东西都是基于这本书,我还没有读完。 :)

最佳答案

Netty看起来的 channel 处理程序

package netty_sample;

import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelHandler;

/**
* Server side action
*/
public class EchoServerHandler extends SimpleChannelHandler {
/**
* This method will be invoked when server recieved a message
*/
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) {
String msg = (String) event.getMessage(); // extract a message received

// You can write any code which handles the message, changes data, and create message for client, etc.

ctx.getChannel().write(someMessageToClient); // send back to client
}
}

据我了解,当服务器收到消息时,处理程序例程会动态调用(以事件驱动的方式)。因此处理程序中的代码是动态工作的,您可以在代码中编写任何内容。

关于java - 使用netty动态传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27436053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com