Sockets Netty连接池未向服务器发送消息
我有一个简单的netty连接池和一个简单的HTTP端点,用于将TCP消息发送到ServerSocket。相关代码如下所示,客户端为: 然后打印出发生的事件,这样它们就不相关了。当服务器和客户端启动并且我向测试端点发送测试消息时,我可以看到服务器打印连接的新客户端,但不打印客户端发送的消息。服务器不会打印客户端发送的任何连续消息 如果我尝试telnet,一切正常,服务器会打印消息。同样,它也适用于具有相同引导配置且没有连接池的常规netty客户端 有人能看出我的连接池出了什么问题吗?我没有主意了 Netty版本:4.1.39.1最终版本 所有代码都可用 更新 遵循诺曼·莫雷尔的建议。我补充说Sockets Netty连接池未向服务器发送消息,sockets,netty,serversocket,Sockets,Netty,Serversocket,我有一个简单的netty连接池和一个简单的HTTP端点,用于将TCP消息发送到ServerSocket。相关代码如下所示,客户端为: 然后打印出发生的事件,这样它们就不相关了。当服务器和客户端启动并且我向测试端点发送测试消息时,我可以看到服务器打印连接的新客户端,但不打印客户端发送的消息。服务器不会打印客户端发送的任何连续消息 如果我尝试telnet,一切正常,服务器会打印消息。同样,它也适用于具有相同引导配置且没有连接池的常规netty客户端 有人能看出我的连接池出了什么问题吗?我没有主意了
ChannelFuture channelFuture = ch
.writeAndFlush(msg + System.lineSeparator());
channelFuture.addListener(writeFuture -> {
System.out
.println("isSuccess(): " + channelFuture.isSuccess() + " : " + channelFuture.cause());
});
这是打印出来的
isSuccess: false : java.lang.UnsupportedOperationException: unsupported message type: String (expected: ByteBuf, FileRegion)
为了修复它,我只是将字符串转换为ByteBuf
您应该检查writeAndFlush返回的ChannelFuture的状态。。。。我怀疑它失败了 好小费。它返回isSuccess:false和原因:java.lang.UnsupportedOperationException不支持的消息类型:应为字符串:ByteBuf,FileRegion谢谢
ChannelFuture channelFuture = ch
.writeAndFlush(msg + System.lineSeparator());
channelFuture.addListener(writeFuture -> {
System.out
.println("isSuccess(): " + channelFuture.isSuccess() + " : " + channelFuture.cause());
});
isSuccess: false : java.lang.UnsupportedOperationException: unsupported message type: String (expected: ByteBuf, FileRegion)
ch.writeAndFlush(Unpooled.wrappedBuffer((msg + System.lineSeparator()).getBytes()));