所以我试图从文本文件中提取一些IP并在套接字连接中使用该列表。我的问题是我一直收到以下错误:
TypeError:str,bytes或bytearray expected,not list
以下是使用的代码:
import socket
ips = open('list.txt', 'r').readlines()
def displayType(sec_type):
switcher = {
0: "1",
1: "2",
2: "3"
}
print(' type: ' + str(sec_type) + ' (' + switcher.get(sec_type,"Not defined by IETF") +')' )
try:
def check(ip,port):
link = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
link.connect((ip,int(port)))
link_ver = link.recv(12)
print(link_ver)
link.send(link_ver)
nb_sec_types = ord(link.recv(1))
print("types: " + str(nb_sec_types))
check(ips,"80")
如果有人知道如何使用列表中的ip,那就太棒了。
答案 0 :(得分:1)
更改
check(ips, "80)
代表
for ip in ips:
check(ip, "80)
link.connect
期待一个唯一的ip
,并且您传递的是ips列表。
答案 1 :(得分:0)
方法readlines()
读取直到EOF并返回包含这些行的列表。所以你在ips中得到一个列表。您将需要遍历此列表并在每次迭代时调用check()。
此外,您使用了try
阻止了except
或finally
。这将导致错误。
您可以将catch()放在try-except块中:
try:
catch(ip, port)
except Exception as e:
print(str(e))