Python2.7套接字错误37“;“已在运行中”;
我正在制作一个脚本,读取一个充满代理服务器的文件,并检查它们是否正常工作Python2.7套接字错误37“;“已在运行中”;,python,python-2.7,sockets,Python,Python 2.7,Sockets,我正在制作一个脚本,读取一个充满代理服务器的文件,并检查它们是否正常工作 import socket proxyFile = open("proxies.txt","r"); lines = proxyFile.readlines(); class Colors: none = "\033[0m"; red = "\033[31m"; green = "\033[32m"; yellow = "\033[33m"; blue = "\033[34m";
import socket
proxyFile = open("proxies.txt","r");
lines = proxyFile.readlines();
class Colors:
none = "\033[0m";
red = "\033[31m";
green = "\033[32m";
yellow = "\033[33m";
blue = "\033[34m";
purple = "\033[35m";
cyan = "\033[36m";
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
sock.settimeout(3);
for line in lines:
line = line.replace(":"," : ");
reader = line.split();
ip = reader[reader.index(":") - 1];
port = int(reader[reader.index(":") + 1]);
try:
sock.connect((ip,port));
print Colors.cyan + ip + ":" + str(port) + Colors.none + " is " + Colors.green + "UP";
sock.close();
except socket.timeout:
print Colors.cyan + ip + Colors.yellow + ":" + Colors.cyan + str(port) + Colors.none + " is " + Colors.red + "DOWN";
看起来文件读取良好,套接字创建,但它只连接到一台服务器,然后给出错误
代理文件:
1.0.134.56:8080
1.165.192.248:3128
1.172.185.143:53281
1.179.156.233:8080
1.179.164.213:8080
1.179.185.253:8080
1.192.242.191:3128
1.20.169.166:8080
1.20.179.68:8080
1.20.99.163:8080
你不能是一个插座。一旦连接,它就连接了。即使你打电话:
将来对套接字对象的所有操作都将失败
正确的答案是每次通过循环创建一个新的套接字,无论是使用还是使用andconnect
。例如,将try
块更改为:
try:
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
sock.settimeout(3);
sock.connect((ip,port));
print Colors.cyan + ip + ":" + str(port) + Colors.none + " is " + Colors.green + "UP";
sock.close();
except socket.timeout:
print Colors.cyan + ip + Colors.yellow + ":" + Colors.cyan + str(port) + Colors.none + " is " + Colors.red + "DOWN";
关闭套接字后,无法重新连接它。每次通过循环创建一个新的套接字。@abarnert啊,我不知道,谢谢!作为旁注:分号在Python中不像在C中那样是语句终止符;它们只用于在同一行上分隔多个简单语句(这是一件非常罕见的事情)。您不应该在每行末尾都有一个。此外,只要可能,您应该使用
with
语句,而不是显式的close
调用(或者根本不关闭文件)。在Python 3.2+中,这适用于套接字和文件。另外,如果只想迭代行,则不需要对文件调用readlines
;只需迭代文件中的行:
@abarnert感谢您提供的提示和信息!此外,我使用分号作为强迫症的标记。