在Java中成功关闭套接字时是否可以触发事件?
参考我之前提出的问题,插座闭合需要一些时间才能操作: 我可以要求它在关闭套接字时运行多个代码吗?谢谢。我遇到了在Java中成功关闭套接字时是否可以触发事件?,java,sockets,Java,Sockets,参考我之前提出的问题,插座闭合需要一些时间才能操作: 我可以要求它在关闭套接字时运行多个代码吗?谢谢。我遇到了SocketChannels,据我所知(以及堆栈溢出所知),JDK不支持这种方式。然而,我并没有因此而停止。通过适当的封装,您可以执行以下操作: public class SocketWrapper implements Closeable { private final Socket socket; public SocketWrapper(Socket socke
SocketChannel
s,据我所知(以及堆栈溢出所知),JDK不支持这种方式。然而,我并没有因此而停止。通过适当的封装,您可以执行以下操作:
public class SocketWrapper implements Closeable {
private final Socket socket;
public SocketWrapper(Socket socket) {
this.socket = socket;
}
/**
* Provide all the methods you need in your application
* for accessing the internal socket
*/
public void close() throws IOException {
socket.close();
fireClosedEvent();
}
/**
* Event firing methods, etc.
*/
}
这并不像我希望的那样灵活,这就是为什么我仍然没有回答我的问题,但这可能是一个很好的解决方案。当然,想出一个比SocketWrapper
更好的名字可能是个好主意。我遇到了SocketChannel
s,据我所知(以及据堆栈溢出所知),JDK不支持这样做。然而,我并没有因此而停止。通过适当的封装,您可以执行以下操作:
public class SocketWrapper implements Closeable {
private final Socket socket;
public SocketWrapper(Socket socket) {
this.socket = socket;
}
/**
* Provide all the methods you need in your application
* for accessing the internal socket
*/
public void close() throws IOException {
socket.close();
fireClosedEvent();
}
/**
* Event firing methods, etc.
*/
}
这并不像我希望的那样灵活,这就是为什么我仍然没有回答我的问题,但这可能是一个很好的解决方案。当然,想出一个比SocketWrapper更好的名字可能是个好主意。我不知道你说close需要一些时间来操作是什么意思。据我所知,close()是非阻塞的。它马上就回来了。我不知道你说的close需要一些时间来操作是什么意思。据我所知,close()是非阻塞的。它马上就回来了。可能是