Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是;“操作完成”;卑鄙_Java_Netty - Fatal编程技术网

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的工作方式)。如果您需要保证,您需要在协议中添加一些内容(如确认消息)。

非常感谢!找不到更好的来源:)