【问题标题】:Network resources for TCP connections in python [Windows]python中TCP连接的网络资源[Windows]
【发布时间】:2013-06-17 12:00:56
【问题描述】:

不确定我自己使用的 python 脚本是否有问题。 基本上,它产生线程,每个线程都创建一个 tcp 连接。 好吧,脚本完成了,我什至检查是否有任何线程仍在运行,它们都返回 False(不活动,这很好)。

问题是,如果我检查(我使用来自 nirsoft 的 CurPorts),一些 tcp 连接(有时在 1 到 9 之间)仍处于已建立状态,有时处于已发送状态。 这是一个问题吗?它们最终会消失,但会在几分钟后消失。 这是python的错误,还是基本的windows程序?

如果有帮助的话,我会用 S.close 关闭套接字。我没有使用守护线程,只是简单的线程,我只是等到它们都完成(t.join())

我需要知道我应该担心还是让他们放心。原因是他们正在吃掉临时端口号,除此之外我不知道它是否会占用我的资源。

不胜感激菜鸟友好的回应。

最后编辑:我在发送 S.close() 之前确实使用了 S.shutdown() 我不做任何错误检查,除了尝试之外我不知道如何去做:

【问题讨论】:

标签: python windows multithreading sockets tcp


【解决方案1】:

简单的答案是 TCP 连接需要在关闭之前正常关闭。

这里有更多关于如何调用shutdown和close的细节:

【讨论】:

  • 我确实在 S.close() 之前发送 S.shutdown(),我也使用非阻塞套接字,但不是使用 select(),而是使用 setblocking(0) 和 settimeout(15)对于整个套接字
  • 编辑:到目前为止,脚本完成后,已建立和已发送的 tcp 连接平均会在大约 1 分半钟内终止。正常吗?我应该就这样离开它并继续它吗?我将 shutdown() 和 close() 更改为 shutdown(1) 和 close()
  • 看看第三个链接。它在表格中解释了您应该(IIUC):关闭(WR),并等待 FD_CLOSE、close()。
猜你喜欢
  • 2022-01-10
  • 1970-01-01
  • 2014-08-15
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 2023-03-20
相关资源
最近更新 更多