Java 什么是;“操作完成”;卑鄙
我的问题其实是: 调用Java 什么是;“操作完成”;卑鄙,java,netty,Java,Netty,我的问题其实是: 调用ChannelFutureListener.operationComplete并且Future.isSuccess()为true(在上述方法中为ofc)时,这是否保证远程方已收到消息 具体例子: public void sendMessage(String message) { m_Context.writeAndFlush(toByteBuf(message)).addListener(new ChannelFutureListener() {
ChannelFutureListener.operationComplete
并且Future.isSuccess()
为true
(在上述方法中为ofc)时,这是否保证远程方已收到消息
具体例子:
public void sendMessage(String message) {
m_Context.writeAndFlush(toByteBuf(message)).addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture f) throws Exception {
if (f.isSuccess()) {
System.out.println("Remote party received message"); // is this safe to assume?
}
}
});
}
我们可以说如果代码进入if(f.issucess()){..}
块,消息就到达了目的地吗
任何答案都是非常感谢的,但引用一些来源也很好:)
提前谢谢 它基本上就是这个名字的意思,您请求的操作已经完成了。在
writeAndFlush(…)
的情况下,它意味着write(…)
/writev(…)
系统调用已完成,因此被传输到内核网络堆栈,仅此而已
因此,无法保证远程方已经收到消息(这只是tcp的工作方式)。如果您需要保证,您需要在协议中添加一些内容(如确认消息)。非常感谢!找不到更好的来源:)