socket.error的原因是什么

0 投票
1 回答
1070 浏览
提问于 2025-04-15 23:12

我对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

对我来说运行得很好,不过它从来没有返回任何东西。(Linux 2.6.32)

撰写回答