簡體   English   中英

套接字錯誤后繼續循環

[英]continue loop after socket error

我正在使用python循環查找開放端口。 它應該工作的方式是,如果我列表中的端口已打開並接受tcp連接,它將向我發送響應,否則,它將跳至下一個端口號。

我遇到的問題是,如果第一個端口沒有響應,我從套接字收到錯誤,則循環停止。 這是腳本,包括如何定義我的端口列表。

import numpy;
import socket;
import sys;

with open("ports.ls") as f:
    ports = f.read().split(",");

portslist = []
for i in ports:
    portslist.append(i.strip());

portslist = [int(i) for i in portslist]

for i in portslist:
    target_host = sys.argv[1];
    target_port = i;
    print "[*] port:%d" % target_port;
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
    client.connect((target_host, i));
    client.send("GET / HTTP/1.1\r\nHost: %s\r\n\r\n" % target_host);
    response = client.recv(4096);
    print response;

我得到的錯誤是

socket.error: [Errno 11] Resource temporarily unavailable

盡管第一個端口沒有響應,如何繼續循環到下一個迭代?

假設這是此腳本中引發的異常,並且未從遠程服務器傳遞回去,則只需添加一個異常處理程序即可。

...並擺脫分號!

import numpy
import socket
import sys

with open("ports.ls") as f:
    ports = f.read().split(",")

portslist = []
for i in ports:
    portslist.append(i.strip())

portslist = [int(i) for i in portslist]

for i in portslist:
    target_host = sys.argv[1]
    target_port = i
    print "[*] port:%d" % target_port
    try:
        client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        client.connect((target_host, i))
        client.send("GET / HTTP/1.1\r\nHost: %s\r\n\r\n" % target_host)
        response = client.recv(4096)
        print response
    except socket.error as e:
        print e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM