在Python套接字连接中延迟accept()

时间:2020-10-08 04:21:09

标签: python sockets tcp tcpserver

在Python3中使用套接字,我可以吗?

  • listen()在套接字上
  • 当我在该套接字上收到连接:connect()到另一台服务器
  • 如果连接成功,则accept()进行第一个连接,否则关闭套接字

这可能吗?如果可以,怎么办?

1 个答案:

答案 0 :(得分:1)

accept是服务器应用程序了解某些客户端已连接并为该客户端获取套接字的方式。但是accept实际上并未创建与客户端的连接。仅由于服务器套接字已更改为listen状态,操作系统已经建立了此连接。 accept仅向应用程序提供已建立的TCP连接。

因此,您实际上需要首先调用accept才能知道有一些客户端连接到服务器。如果您不希望此客户端仅close接受的连接。

请注意,某些操作系统具有accept filters的概念,在accept返回连接之前,可以在内核内部检查连接。但是即使在这种情况下,也首先建立了TCP连接,并且从客户端的角度来看,所建立的连接实际上是关闭的(即OS内核或服务器应用程序)也没有太大区别。