【问题标题】:shutdown() and close() not found in 'None'在“无”中找不到关闭()和关闭()
【发布时间】:2021-01-03 08:00:16
【问题描述】:

我正在使用 python 3.8,并尝试学习为网络编写代码;我从 2014 年看到了一些带有端口扫描器代码的示例,它定义了这样的端口扫描功能:

def pscan(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        con = sock.connect((target, port))
        with print_lock:
            print("Port:",port,"is open.")
        con.shutdown()
        con.close()

当我在 pycharm 中实现它时,我看到了以下消息: “在‘​​无’中找不到参考‘关机’ 和 "在 'None' 中找不到参考 'close'

代码运行,但似乎永远不会停止......我猜这是由于没有正确关闭套接字。

谁能告诉我我的错误在哪里?

【问题讨论】:

标签: python sockets port-scanning


【解决方案1】:

connect 不返回任何内容。

我想你想要这个:

def pscan(port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        sock.connect((target, port))
        with print_lock:
            print("Port:",port,"is open.")
        sock.shutdown()
        sock.close()

另外,如果您之后要立即致电close,则无需致电shutdown

【讨论】:

  • 好的,这是有道理的,在发布这个问题之前我已经尝试过,它确实删除了“错误”,但它似乎并没有解决脚本无休止运行的问题。我知道这样的事情可以运行很长一段时间,但我已经用线程实现了这个,并且之前的迭代已经成功结束;这似乎永远持续下去。我还缺少其他东西吗?
  • 我不知道你说的“脚本无休止地运行”是什么意思你只展示了几行套接字代码。
猜你喜欢
  • 2013-03-25
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 2015-01-19
相关资源
最近更新 更多