在 Python 套接字连接中延迟 accept()
Delay accept() in Python socket connection
在Python3中使用套接字,我可以:
listen()
在套接字上
- 当我在该套接字上收到连接时:
connect()
到另一台服务器
- 如果连接成功,
accept()
第一次连接,否则关闭socket
这可能吗?如果是,怎么做?
accept
是服务器应用程序知道某个客户端已连接并获取到此客户端的套接字的方式。但是 accept
实际上并没有创建到客户端的连接。由于服务器套接字已更改为 listen
状态,因此 OS 已经建立了此连接。 accept
仅向应用程序提供已建立的 TCP 连接。
所以你需要先实际调用 accept
才能知道有一些客户端连接到服务器。如果您不想要此客户端,只需 close
已接受的连接。
请注意,某些 OS 具有 accept filters 的概念,其中可以在 accept
返回连接之前在内核内部检查连接。但即使在这种情况下,首先建立 TCP 连接,从客户端的角度来看,实际关闭已建立的连接并没有太大区别,即 OS 内核或服务器应用程序。
在Python3中使用套接字,我可以:
listen()
在套接字上- 当我在该套接字上收到连接时:
connect()
到另一台服务器 - 如果连接成功,
accept()
第一次连接,否则关闭socket
这可能吗?如果是,怎么做?
accept
是服务器应用程序知道某个客户端已连接并获取到此客户端的套接字的方式。但是 accept
实际上并没有创建到客户端的连接。由于服务器套接字已更改为 listen
状态,因此 OS 已经建立了此连接。 accept
仅向应用程序提供已建立的 TCP 连接。
所以你需要先实际调用 accept
才能知道有一些客户端连接到服务器。如果您不想要此客户端,只需 close
已接受的连接。
请注意,某些 OS 具有 accept filters 的概念,其中可以在 accept
返回连接之前在内核内部检查连接。但即使在这种情况下,首先建立 TCP 连接,从客户端的角度来看,实际关闭已建立的连接并没有太大区别,即 OS 内核或服务器应用程序。