gpt4 book ai didi

java - ServerSocket.accept()方法的内部实现?

转载 作者:行者123 更新时间:2023-12-01 12:30:54 25 4
gpt4 key购买 nike

大家都知道java中的socket编程。我们编写如下代码:

 ServerSocket serverSocket = new ServerSocket(1234);
Socket server = serverSocket.accept();

我们知道我们创建了 serverSocket 对象,接下来我们编写 serverSocket.accept(); 代码来接收客户端请求。我们知道 serverSocket.accept(); 等待新请求到来。

但我的问题是:serverSocket.accept(); 方法内部做了什么?可能是在 while 循环中运行?服务器如何识别有任何新请求来服务? serverSocket.accept(); 方法的内部实现是什么?有人对此有想法吗?

最佳答案

在 Linux 上,ServerSocket.accept() 最终(在 native 代码中)执行一个 accept 系统调用(请参阅 man 2accept),阻塞等待合适的传入连接。

Java 代码或 native 代码中没有 while 循环。我不知道 Linux 内核内部发生了什么,但那时这不再是 Java 问题。

<小时/>

同样的情况可能也适用于 Windows 上的 Java,以及 C# 或您想要考虑的任何其他编程语言。

关于java - ServerSocket.accept()方法的内部实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25928217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com