top
Loading...
Java網絡編程之傳輸控制協議(二)

四、Socket類

Socket類表現了客戶端套接字,它是屬于一臺或兩臺計算機的兩個TCP通訊端口之間的通訊通道。端口可以連接到本地系統的另一個端口,這樣可以避免使用另一臺計算機,但是大多數網絡軟件將使用兩臺計算機。但是TCP套接字不能與兩臺以上的計算機通訊。如果需要這種功能,客戶端應用程序必須建立多個套接字連接,每臺計算機一個套接字。

構造函數

java.net.Socket類有幾個構造函數。其中兩個構造函數允許使用布爾型參數指定是否使用UDP或TCP套接字,我們不贊成使用它們。這兒沒有使用這兩個構造函數,并且沒有列舉在此處--如果需要UDP功能,請使用DatagramSocket。

try
{
// 連接到指定的主機和端口
Socket mySocket = new Socket ( "www.awl.com", 80);

// ......
}
catch (Exception e)
{
System.err.println ("Err - " + e);
}

但是還有很多構造函數可以用于不同的情形。除非特別指出,所有的構造函數都是公共的。

· protected Socket ()-使用當前套接字產生組件提供的默認實現建立不連接的套接字。開發者一般不應該使用這個方法,因為它不允許指定主機名稱和端口。

· Socket (InetAddress address, int port)產生 java.io.IOException異常。

· java.lang.SecurityException-建立連接到指定的IP地址和端口的套接字。如果不能建立連接,或連接到主機違反了安全性約束條件(例如某個小的服務程序試圖連接到某臺計算機而不是載入它的計算機時),就產生這種異常。

· Socket (InetAddress address, int port, InetAddress localAddress, int localPort)產生java.io.IOException、java.lang.SecurityException異常-建立連接到指定的地址和端口的套接字,并把它綁定到特定的本地地址和本地端口。默認情況下,使用一個自由(空)的端口,但是在多地址主機環境(例如本地主機有兩個或多個的計算機)中,該方法也允許你指定一個特定的端口號、地址。

· protected Socket (SocketImpl implementation)--使用特定的套接字的實現(implementation)建立未連接的套接字。通常情況下開發者不應該使用這個方法,因為它允許指定主機名稱和端口。

· Socket (String host, int port)產生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException異常--建立連接到特定主機和端口的套接字。這個方法允許指定一個字符串而不是一個InetAddress。如果指定的主機名稱不能夠解析,就不能建立連接,如果違反了安全性約束條件就產生異常。

· Socket (String host, int port, InetAddress localAddress, int localPort)產生java.net.UnknownHostException、java.io.IOException、java.lang.SecurityException異常--建立連接到特定主機和端口的套接字,并綁定到特定的本地端口和地址。它允許指定字符串形式的主機名稱,而不是指定InetAddress實例,同時它允許指定一個將綁定的本地地址和端口。這些本地參數對于多地址主機(如果可以通過兩個或更多IP地址訪問的計算機)是有用的。如果主機名稱不能解析,就不能建立連接,如果違反了安全性約束條件會產生異常。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗