当前位置: 首页 > 知识库问答 >
问题:

从Netty客户端向服务器发送字符串消息

单于正业
2023-03-14

我有一个Netty客户端和一个Netty服务器,并按照主要教程后,为了有一个EchoClient/服务器,我想让它,使我的客户端发送消息到我的服务器,当他第一次连接到它。

下面是我的ClientClassHandler方法,这些方法应该解决这个问题:

 private final ByteBuf firstMessage;

    public ClientClassHandler() {
        firstMessage = Unpooled.buffer(ClientClass.SIZE);
        for (int i = 0; i < firstMessage.capacity(); i++) {
            firstMessage.writeByte((byte) i);
        }
    }

    @Override
    public void channelActive(ChannelHandlerContext ctx) {
        System.out.println("Channel is active.");
        ctx.writeAndFlush(firstMessage);
    }

但是正如你所看到的,教程使用了一个ByteBuf和一个String似乎不起作用!

下面是我如何在我的ServerClassHandler方法中显示收到的消息:

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
    System.out.println(msg); 
}

但是当为firstMessage使用字符串并在构造函数中初始化它并发送它时,我的服务器不会显示任何内容!

我有什么不明白的?

共有2个答案

田意致
2023-03-14

只想在netty中添加更多关于String的信息,

您可以将对象转换为Bytebuff

 ByteBuf in = (ByteBuf) msg;
 String data = in.toString(CharsetUtil.UTF_8);

但如果您有长字符串对象,我建议对netty和LineBasedFrameDecoder使用StringEncoder和decoder,并将处理程序扩展到

SimpleChannelInboundHandler<String>
汪兴为
2023-03-14

如果你想发送一个字符串,然后首先使用Unpooled.copiedBuffer(string, charset)将其转换为ByteBuf

Netty有一个CharsetUtil来帮助解决这个问题

 类似资料:
  • 问题内容: 我需要从Windows Java服务器向Linux C ++客户端发送一个字符串,反之亦然,但是我编写的代码无法正常工作,我也不知道为什么: *Windows上的 *Java服务器 代码 发送字符串 : *Windows *上的 Java服务器 代码 以接收数据 : *Linux上的 *C ++客户端 代码 发送数据 : *Linux上的 *C ++客户端 代码 以接收数据 : 为什么

  • 我有一个基本的Netty服务器(来自教程)(http://netty.io/wiki/user-guide-for-4.x.html),它会接收来自客户端的请求,但如何向客户端发送字符串呢? 例如,在普通的Minecraft服务器上,您在配置文件中指定“MOTD”,当客户端从服务器列表中发出信号时,它将显示该字符串。我需要做同样的事情,但是从我的服务器代码中。

  • 问题内容: 我将实现类似于Facebook通知和此网站的内容(StackOverflow的通知会通知我们是否有人为我们的问题写评论/答案等)。请注意,用户将使用我的应用程序作为网站而不是移动应用程序。 我遇到以下获取结果的答案,但我需要推送结果而不是获取结果。 根据建议,我在实体类中创建了一个简单方法,并向其中添加了@PostPersist,但此方法不起作用,因此基于此答案,我添加了persist

  • 我正在试用netty,但当我响应时,客户端似乎没有收到我的消息。我使用Java NIO和socketChannel编写了相同的代码,看起来很好。我这样说是因为客户机会记录我发送的任何内容。下面是我的服务器 下面是我的服务器处理程序 } 示例响应: 我正在我的盒子上做一个tcpdump,我看到了我在电线上发送的内容,所以我不确定我做错了什么。而且,几分钟后,这会被记录下来,我不确定我在服务器或服务器

  • 我使用的是Netty 3.9.5,我有一个简单的客户机-服务器设置,我从http://en.wikipedia.org/wiki/Netty_(软件)#Netty\u TCP\u示例。我扩展了这个示例,将Java search plan对象从客户端发送到服务器。在这个网站上跟踪用户的帮助下,我已经能够让这个程序按预期运行。 现在,我想让我的读卡器/服务器程序同时接受多个客户端。我想我会使用下面列出

  • 问题内容: 所以现在,我正在制作一个基于客户端服务器应用程序的多线程。在服务器端,我为接受的每个连接创建了一个线程。 在线程类中,我创建了一种将命令发送到客户端的方法。我只想要的是如何将参数发送到所有正在运行的客户端?为简单起见,我只想使此服务器向所有连接的客户端发送消息。 我已经阅读了这篇文章,并从此链接中找到方法。但是,当我尝试使用自己的代码时,中没有类似的方法。 好的,这是我的服务器和线程示