Причина для socket.error - PullRequest
0 голосов
/ 27 мая 2010

Я полный новичок, когда дело доходит до Python и программирования в целом. Последние несколько недель я работал над небольшим веб-приложением, пытаясь улучшить свои навыки написания кода. Несколько дней назад мой ноутбук был украден, поэтому я вышел и купил новый MacBook Pro. Слава Богу, у меня все было под контролем подрывной деятельности. Теперь проблема в том, что на моей новой машине запущенный скрипт перестал работать, и я понятия не имею, почему.

Это действительно единственная часть того, что я писал, которую я заимствовал для существующих сценариев. Это из широко доступного скрипта whois.py, и я лишь немного изменил его следующим образом (см. Ниже). На моей старой системе он работал нормально (работает на Ubuntu), но теперь вызывается socket.error. Я полностью потерян на этом, и был бы очень признателен за любую помощь. Спасибо!

def is_available(domainname, whoisserver="whois.verisign-grs.com", cache=0):

    if whoisserver is None:
        whoisserver = "whois.networksolutions.com"

      s = None

      while s == None:
        try:
          s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          s.setblocking(0)
          try:
            s.connect((whoisserver, 43))
          except socket.error, (ecode, reason):
            if ecode in (115, 150): pass
            else:
              raise socket.error, (ecode, reason)
          ret = select.select([s], [s], [], 30)

          if len(ret[1])== 0 and len(ret[0]) == 0:
            s.close()
            raise TimedOut, "on connect "
          s.setblocking(1)

        except socket.error, (ecode, reason):
          print ecode, reason
          time.sleep(1)
          s = None


      s.send("%s \n\n" % domainname)
      page = ""
      while 1:
        data = s.recv(8196)
        if not data: break
        page = page + data

      s.close()

1 Ответ

0 голосов
/ 27 мая 2010

Работает нормально для меня, хотя ничего не возвращает. (Linux 2.6.32)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...