栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

净额不写

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

净额不写

Netty是异步的,这意味着在写入失败时它不会引发异常。它不会引发异常,而是返回一个

Future<?>
将在请求完成后更新的。确保在第一个调试步骤中记录由此产生的所有异常:

channel.writeAndFlush(...).addListener(new GenericFutureListener<Future<Object>>() {    @Override    public void operationComplete(Future<Object> future) {        // TODO: Use proper logger in production here        if (future.isSuccess()) { System.out.println("Data written succesfully");        } else { System.out.println("Data failed to write:"); future.cause().printStackTrace();        }    }});

或更简单地说:

channel.writeAndFlush(...).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE);

获得异常的根本原因后,可能会出现多个问题:

java.lang.UnsupportedOperationException:

unsupported message type: <type> (expected: ...)

注意:
使用时也会抛出此错误

ObjectEnprer
,但您的对象未实现
Serializable

默认的Netty通道只能发送

ByteBuf
s和
FileRegion
。您需要通过向管道添加更多处理程序,或将它们手动转换为
ByteBuf
s
,将对象转换为这些类型。

A

ByteBuf
是字节数组的Netty变体,但具有性能潜力,因为它可以存储在直接存储空间中。

通常使用以下处理程序:

转换

String
用途
StringEnprer

转换
Serializable
用途
ObjectEnprer
(警告,与普通Java对象流不兼容)转换
byte[]
用途
ByteArrayEnprer

注意: 由于TCP是基于流的协议,因此您通常需要附加某种形式的数据包大小,因为您可能不会收到写入的确切数据包。有关更多信息,请参见Netty
Wiki中的处理基于流的传输。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486511.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号