Python中的简单端口扫描程序-错误:需要整数

Python中的简单端口扫描程序-错误:需要整数,python,port,Python,Port,如您所见,这是一个非常简单的端口扫描程序,我尝试运行它(目前正在学习一些渗透测试) 这是我得到的错误: #!/usr/bin/python3 import socket ip = input('Enter the IP address: ') port = input('Enter the Port: ') s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) if s.connect_ex((ip,port)): pr

如您所见,这是一个非常简单的端口扫描程序,我尝试运行它(目前正在学习一些渗透测试)

这是我得到的错误:

#!/usr/bin/python3
import socket

ip = input('Enter the IP address: ')
port = input('Enter the Port: ')

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

if s.connect_ex((ip,port)):
        print ('Port', port, 'is closed')
else:
        print ('Port', port, 'is open')
回溯(最近一次呼叫最后一次):
文件“/python.py”,第9行,在
如果s.connect_ex((ip,端口)):
TypeError:需要一个整数(获取类型str)
我假设我需要将第9行设置为一个整数-我该怎么做

提前干杯。

这里:
port=input('Enter the port:')
您读取了用户输入,它是一个
str
,并将其作为端口号传递(这应该是您可能已经猜到的
int
)。你的回溯告诉你完全一样的事情。您需要通过调用
int(port)
input()
返回一个字符串,您需要将该字符串转换为整数。将字符串转换为有效整数可能是一项相当复杂的任务。第一种方法是改变

port = int(input('Enter the Port: '))
进入


感谢您发布完整的错误回溯。你认为这个错误意味着什么?可能是@quamrana的重复我相信这意味着我需要将第9行设置为整数。但是,我不知道如何在这样的上下文中执行此操作。从答案中可以看出,它实际上只是抱怨
connect\u ex
方法的
port
参数。该方法需要一个整数作为第二个参数,但您对python及其库了解得越多,诊断这些问题就越容易。@quamrana感谢您澄清这一点-我现在已经解决了这个问题(是时候处理下一个问题了)。不确定你的第一句话是否是讽刺。也就是说,发布完整的错误回溯是不可接受的。很抱歉,如果我不想为自己付出任何努力。谢谢你的回答,非常感谢。你也可以使用:
if not port.isdigit():print(“eroor重试”)
port = int(input('Enter the Port: '))
port = input('Enter the Port: ')
port = input('Enter the Port: ')
try:
    port = int(port)
except ValueError as err:
    print('Invalid input. Please try again.')