WhoIs服務允許你獲得有關域名所有者,電子郵件地址所有者的有關信息。所有的信息儲存在Internic的數據庫中。這個不會向服務器發送任何命令。你只需要通過rs.internic.net的43號端口同服務器建立連接,然後發送你要查的域名或電子郵件地址就行了。如果找不到你要查找的信息,服務器會告訴你信息未找到,然後服務器將關閉與你的連接。
打開一個新的工程(都成一句廢話了)。將Winsock控件添加到窗體中:
將txtResponse文本框控件的屬性作小小的修改:MultyLine=True,ScrollBars-"3-Both".將下面的代碼粘貼到相應的事件中:
PrivateSubCommand1_Click()
txtResponse=""
Winsock1.Close
Winsock1.LocalPort=0
Winsock1.Connect"rs.internic.net",43
EndSub
PrivateSubCommand2_Click()
txtSearch=""
txtResponse=""
EndSub
PrivateSubWinsock1_Connect()
Winsock1.SendDatatxtSearch&vbCrLf
EndSub
PrivateSubWinsock1_DataArrival(ByValbytesTotalAsLong)
DimstrDataAsString
OnErrorResumeNext
Winsock1.GetDatastrData
txtResponse=txtResponse&strData
EndSub
請務必記住在尾處加上vbLf,表示要傳送的文本的結束,否則服務器會一直在那裡傻等。這點對任何Internet協議都適用。
運行程序後在文本框中輸入要查找的東西,例如oracle.com,然後按Lookup按鈕。幾秒鐘之後服務器會將查到的資料返回給你。這些信息看起來象下面這個衰樣。
原因是UNIX系統用相當於VB的vbLf來作為分行符,而不是vbCrLf。所以為了讀起來更容易一些,你需要對收到的信息作一點處理。如果你用的是VB6,可以用下面的語句,用vbCrLf代替掉vbLf。
strData=Replace(strData,vbLf,vbCrLf)
NowtheWinsock1_DataArrivaleventshouldlooklikethis:
PrivateSubWinsock1_DataArrival(ByValbytesTotalAsLong)
DimstrDataAsString
OnErrorResumeNext
Winsock1.GetDatastrData
strData=Replace(strData,vbLf,vbCrLf)
txtResponse=txtResponse&strData
EndSub
如果你要查某人的電子郵件地址,輸入名字就行了。比如說"gates,bill"。服務器會返回所有符合條件的記錄。其中緊跟在名稱後面的括號內是記錄的ID。你也可以直接輸入ID去查,但記住在ID前面加一個感歎號。
網上還有其他很多Whois服務器,你可以查國家,大學等等。在下面這個地址可獲得Whois服務器的清單。ftp://sipb.mit.edu/pub/whois/whois-servers.list->