Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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中创建SocketClosedHandler?_Java_Sockets_Handler - Fatal编程技术网

如何在java中创建SocketClosedHandler?

如何在java中创建SocketClosedHandler?,java,sockets,handler,Java,Sockets,Handler,如何检测java套接字(客户机套接字或服务器套接字)何时关闭&在发生关闭事件时执行回调方法? 我不想使用异常处理来实现这一点。我正在寻找一种解决方案,如事件处理程序或回调方法,类似这样的解决方案(这只是一个虚构的代码!): 为什么不能使用异常处理?这就是API的设计方式 要做到这一点,唯一的其他方法是设计您的协议,以便另一方在即将关闭之前发送某些内容,以便可以首先对close()进行本地调用,但这并不总是有效的,例如,如果连接意外关闭。是否要处理关闭套接字的事件或“另一端”关闭套接字的事件?在第

如何检测java套接字(客户机套接字或服务器套接字)何时关闭&在发生关闭事件时执行回调方法? 我不想使用异常处理来实现这一点。我正在寻找一种解决方案,如事件处理程序或回调方法,类似这样的解决方案(这只是一个虚构的代码!):


为什么不能使用异常处理?这就是API的设计方式


要做到这一点,唯一的其他方法是设计您的协议,以便另一方在即将关闭之前发送某些内容,以便可以首先对
close()
进行本地调用,但这并不总是有效的,例如,如果连接意外关闭。

是否要处理关闭套接字的事件或“另一端”关闭套接字的事件?在第一种情况下,可以对套接字进行子类化,并添加在调用“close”时调用的处理程序

在后一种情况下,问题在于这不是自动检测到的,可靠地检测它可能很困难,并且取决于用于通过套接字进行通信的协议。参见例如,SO问题。通常,您必须采取措施来确定插座是否已被另一侧关闭。如果是这样,你需要采取行动。无论您采取什么操作,都可以确保它还调用您为该操作注册的回调处理程序

Socket s = new Socket(ip, port);
s.addSocketClosedHandler(new SocketClosedHandler(){

    @Override
    public void onSocketClosed(SocketClosedEvent e){
        ...
    }

});