Python2.7套接字错误37“操作正在进行”

2024-09-28 01:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个脚本,它读取一个充满代理服务器的文件并检查它们是否正常运行。在

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";

看起来文件读得很好,套接字创建了,但它只连接到一个服务器,然后给出错误。在

代理文件:

^{pr2}$

Tags: 文件ipnoneportlinegreenredsocket
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:22

你不能是一个套接字。一旦接通,就接通了。即使您调用^{}

all future operations on the socket object will fail.

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

相关问题 更多 >

    热门问题