2013-02-02 26 views
1

這是我從Java Complete Reference: 7th Edition得到的一個程序。它稍作修改:創建一個使用whois的套接字

import java.net.*; 
import java.io.*; 

public class WhoIs { 
    public static void main(String[] args) throws Exception{ 
     Socket s = new Socket("internic.net",43); 

     OutputStream os = s.getOutputStream(); 
     String domain = "facebook.com"+"\n"; 
     byte[] stringToByte = domain.getBytes(); 
     os.write(stringToByte); 

     InputStream is = s.getInputStream(); 
     InputStreamReader reader = new InputStreamReader(is); 
     BufferedReader buf = new BufferedReader(reader); 

     String temp; 
     while((temp=buf.readLine())!="\n"){ 
      System.out.println(temp); 
     } 
    } 
} 

它只是聯繫internic.net並獲得有關Facebook的信息。但是,套接字將無法連接。我得到一個異常如下:

Exception in thread "main" java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at java.net.Socket.<init>(Unknown Source) 
    at javacomplete.WhoIs.main(WhoIs.java:8) 

一切都是完全一樣的書除了的讀回數據。我使用了BufferedReader,書中使用InputStream來讀取單個字符。

幫助!爲什麼不能連接?

+0

下一次,請至少在發佈前閱讀的錯誤消息。 – Celada

+0

@Celada我做了,我無法理解爲什麼這個例子在書中起作用,而不是當我執行它時。對不起,我是一個n00b。 –

回答

4

正確的主機名是whois.internic.net而不是internic.net

$ telnet internic.net 43 
Trying 192.0.43.9... 
telnet: connect to address 192.0.43.9: Connection refused 
Trying 2001:500:88:200::9... 
telnet: connect to address 2001:500:88:200::9: No route to host 
telnet: Unable to connect to remote host 

$ telnet whois.internic.net 43 
Trying 199.7.56.74... 
Connected to whois.internic.net. 
Escape character is '^]'. 
+0

謝謝你,這對我來說非常合適。我認爲這本書有錯誤嗎?該地址是從本書的:) –

1

正如你可以清楚地看到,從「連接被拒絕」的錯誤,沒有WHOIS服務器上internic.net口43

你要哪WHOIS服務器聯繫運行?大多數域名註冊商都運行WHOIS服務器,許多ccTLD運營商也運行一個(例如,whois.cira.caca ccTLK),所有RIR(ARIN,RIPE等)運行一個,有一個位於whois.internic.net的gTLD註冊表,等等等等......

相關問題