Python2.7 套接字错误 37 "Operation already in progress"



我正在制作一个脚本,该脚本可以读取一个充满代理服务器的文件并检查它们是启动还是关闭。

import socket
proxyFile = open("proxies.txt","r");
lines = proxyFile.readlines();
class Colors:
none = "33[0m";
red = "33[31m";
green = "33[32m";
yellow = "33[33m";
blue = "33[34m";
purple = "33[35m";
cyan = "33[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

您无法重新connect套接字。一旦连接,它就连接了。即使您打电话给close

将来对套接字对象的所有操作都将失败。

正确的答案是每次通过循环创建一个新套接字,无论是使用create_connection还是使用socketconnect.例如,将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";

相关内容

最新更新