Я хотел создать фрагмент кода, который принимает в 2 списка (1-й список IP-адресов, 2-й список портов). используя итерацию, я попытался достичь соединения (некоторые адреса в списке не работают.) и получить первую страницу HTTP, чтобы проверить, жив или нет адрес.Нет вывода из скрипта python
Это код, который я написал:
import socket
import sys
ipees = []
portees = []
text_file = open("/home/loggyipport.txt", "r")
lines = text_file.readlines()
def go():
for x in lines:
ip, port = x.split()
ipees.append(ip)
portees.append(port)
go()
def dfunc(ipees, portees):
for (ip, port) in zip(ipees, portees):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, int(port)))
s.send('GET/HTTP/1.0\r\n\r\n')
while 1:
buf = s.recv(1000)
if not buf:
break
sys.stdout.write(buf)
s.close()
dfunc(ipees, portees)
Скрипт работает без ошибок. Проблема в том, что я не получаю выход. Может кто-нибудь выяснить, в чем проблема? Является ли мой цикл for, используя функцию «zip», правильно написан?
Почему вы не используете правильную библиотеку доступа HTTP, как [URLLIB] (https://docs.python.org/2/ library/urllib.html) или, по крайней мере, [httplib] (https://docs.python.org/2/library/httplib.html)? – 9000
Ваша программа никогда не достигает строки «sys.stdout.write (buf)», потому что она застряла в бесконечном цикле while (она также никогда не достигает второго IP-адреса в вашем списке) –