2012-05-28 68 views

回答

2

它們是相同的:

Java源代碼:

public 
class Socket { 

... 

    public Socket(String host, int port) 
    throws UnknownHostException, IOException 
    { 
    this(host != null ? new InetSocketAddress(host, port) : 
     new InetSocketAddress(InetAddress.getByName(null), port), 
     (SocketAddress) null, true); 
    } 


    public Socket(InetAddress address, int port) throws IOException { 
    this(address != null ? new InetSocketAddress(address, port) : null, 
     (SocketAddress) null, true); 
    } 

... 
} 
+0

謝謝,這是有益的。 – zhoubo

+0

InetSocketAddress中顯示了差異。第一個構造函數InetSocketAddress(String,int)比另一個構造函數InetSocketAddress(InetAddress,int)需要更多時間,因爲它需要驗證String是否是一個合適的inet地址。 OpenJDK的源代碼可在http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/net/InetSocketAddress.java#InetSocketAddress – andyandy

0

對於HelloWorld型項目沒有他們太大的區別。在較大的項目中,使用方法1可能會有一些優勢。如果您已經有InetAddress對象,那麼通過使用Socket(InetAddress,int)構造函數可以避免讓Socket類檢查字符串是否是適當的Internet地址。

相關問題