在建立连接之前,如何阻止accept()方法?

时间:2017-11-30 10:00:37

标签: java sockets serversocket

来自java.net.ServerSocket#accept()

, EC, ECDHE, ECDH
     

侦听与此套接字的连接并接受它。该   方法阻塞,直到建立连接。

我不明白在建立连接之前该方法的执行是如何停止的。我搜索了源代码但我没有看到任何jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 768循环或public Socket accept() throws IOException

我搜索了这个问题但无法找到解释它的工作原理。

2 个答案:

答案 0 :(得分:1)

PlainSocketImpl中,您拥有native void socketAccept(SocketImpl s) throws IOException;方法。因此它会阻止本机代码,您无需关心它是如何完成的。

答案 1 :(得分:1)

我对此并不完全确定,但我认为accept()通过一些本机lib(可能是某些C或C ++库)进行accept系统调用。然后,accept系统调用将阻止等待适合的传入连接。此时,它不依赖于Java,它取决于每个操作系统如何实现它。