2010-11-08 112 views
0
from Tkinter import * 
import tkMessageBox, socket 


root = Tk() 
root.title("pynet v1.0") 
root.config(bg='black') 
root.resizable(0,0) 

text = Text() 
text1 = Text() 

text1.config(width=15, height=1) 
text1.config(bg="white", fg="red") 
text1.pack() 

def Info(): 
    targetip = socket.gethostbyname_ex(text1.get("1.0", END)) 
    text.insert(END, targetip) 

b = Button(root, text="Enter", width=10, height=2, command=Info) 
b.config(fg="black", bg="red") 
b.pack(side=TOP, padx=5) 

scrollbar = Scrollbar(root) 
scrollbar.pack(side=RIGHT, fill=Y) 
text.config(width=25, height=5, bg="white", fg="red") 
text.pack(side=LEFT, fill=Y) 
scrollbar.config(command=text.yview) 
text.config(yscrollcommand=scrollbar.set) 

root.mainloop() 

我想要檢索的網站的IP地址,但我不斷收到此錯誤,:在第18行 「gaierror [錯誤11004]的getaddrinfo失敗」 ,您的幫助將不勝感激,謝謝。(Python)的gaierror:[錯誤11004]的getaddrinfo失敗

的錯誤:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__ 
    return self.func(*args) 
    File "C:\Users\Rabia\Desktop\gethostinfo.py", line 18, in Info 
    targetip = socket.gethostbyname_ex(text1.get("1.0", END)) 
gaierror: [Errno 11004] getaddrinfo failed 
+0

因此,沒有其他人必須對它進行計數,第19行是'targetip = socket.gethostbyname_ex(text1.get(「1.0」,END)+「\ r \ n」)' – 2010-11-08 17:10:57

+0

您必須擺脫第一個來自套接字導入*的野生導入。除了傷害性能並弄亂名稱空間外,它什麼都不做。這可能不會解決你的問題 – 2010-11-08 17:17:55

回答

2

我的猜測是因爲你使用的是有一個結尾的新行一個主機名。在我寫這個答案的時候,你的代碼所示:

def Info(): 
    targetip = socket.gethostbyname_ex(text1.get("1.0", END)) 
    text.insert(END, targetip) 

當您使用索引END你得到的是由文本控件添加了額外的換行符。您需要將其剝離或使用索引"end-1c"

1

你爲什麼要添加CRLF(\r\n)到主機名尋找它之前?

如果刪除不解決它,打印出你傳遞到的gethostbyname,以確保它是一個有效的主機名的確切文本。

+0

是的,我忘了刪除(\ r \ n)抱歉。我只是輸入隨機網站,如msn.com,google.com,並沒有任何作品。 – SourD 2010-11-08 17:33:16

+0

另外,通過使用索引END,您將獲得換行符作爲主機名 – 2010-11-08 18:23:16

相關問題