2010-05-26 4 views
0

나는 파이썬과 프로그래밍에 관한 한 완전한 초보자 다. 나는 지난 몇 주 동안 약간의 webapp로 코딩 작업을 개선하려고 노력 해왔다. 며칠 전 내 노트북이 도난 당했기 때문에 나가서 새로운 MacBook Pro를 구했습니다. 전복 통제하에있는 모든 것을 하나님 께 감사드립니다. 문제는 이제 내가 새 컴퓨터에서 실행중인 스크립트가 작동을 멈췄으며 이유가 무엇인지 알지 못하는 것입니다.이유가 socket.error

이것은 내가 쓰는 글 중 실제로 기존 스크립트를 많이 빌린 유일한 부분입니다. 이것은 널리 사용 가능한 whois.py 스크립트에서 왔으며 다음과 같이 약간 수정했습니다 (아래 참조). 그것은 내 오래된 시스템 (우분투 실행)에서 잘 돌아가고 있었지만 지금은 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

+0

예. ;) 포트 43에서 telnet으로 whois 서버를 telnet으로 연결할 수도 있습니다. 그래서 연결 문제가 아닙니다. 내가 그것을 실행하면 내가 여기까지 : socket.error (ecode, 이유) 제외 : 인쇄 ecode, 이유 time.sleep (1) S = 없음 그리고 그냥 오류 메시지를 통해 루프 . –

관련 문제