2010-05-26 89 views
0

當談到python和編程時,我是一個完整的新手。在過去的幾周裏,我一直在努力改進我的編碼。幾天前我的筆記本電腦被盜了,所以我出去買了一臺新的MacBook Pro。感謝上帝,我擁有了顛覆控制下的一切。現在的問題是,我在我的新機器上運行的一個腳本已停止工作,我不知道爲什麼。socket.error的原因

這實際上是我寫作的唯一部分,我爲現有腳本大量借用。它來自廣泛使用的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() 

回答

0

適合我的工作,雖然它不會返回任何東西。 (Linux 2.6.32)

+0

據我所知,在Mac上的套接字接口是相同的。我知道這聽起來很愚蠢,但是當你運行它時,你確定你已連接到互聯網嗎? – c4757p 2010-05-27 04:02:30

+0

是的,我是。 ;)我也可以遠程登錄端口43上的whois服務器,並以這種方式連接到它,所以我知道這不是連接問題。 當我運行它,我會在這裏結束: 除了socket.error,(ECODE,原因): 打印ECODE,原因 time.sleep(1) S =無 它只是通過錯誤消息循環。 – 2010-05-27 16:54:18