這是我從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
來讀取單個字符。
幫助!爲什麼不能連接?
下一次,請至少在發佈前閱讀的錯誤消息。 – Celada
@Celada我做了,我無法理解爲什麼這個例子在書中起作用,而不是當我執行它時。對不起,我是一個n00b。 –