首頁(yè)常見問(wèn)題正文

Java培訓(xùn):Socket對(duì)象是什么?

更新時(shí)間:2022-08-18 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  之前我們講到了ServerSocket對(duì)象,它可以實(shí)現(xiàn)服務(wù)器端程序,但只實(shí)現(xiàn)服務(wù)器端程序還不能完成通信,此時(shí)還需要一個(gè)客戶端程序與之交互,為此Java提供了一個(gè)Socket類,用于實(shí)現(xiàn)TCP客戶端程序,通過(guò)查閱API文檔可知,Socket類同樣提供了多種構(gòu)造方法。下面對(duì)Socket的常用構(gòu)造方法進(jìn)行詳細(xì)講解。

  (1)Socket()

  使用構(gòu)造方法在創(chuàng)建Socket對(duì)象時(shí),并沒有指定IP地址和端口號(hào),也就意味著只創(chuàng)建了客戶端對(duì)象,并沒有去連接任何服務(wù)器。通過(guò)該構(gòu)造方法創(chuàng)建對(duì)象后還需要調(diào)用connect(SocketAddress endpoint)方法,才能完成與指定服務(wù)器端的連接,其中參數(shù)endpoint用于封裝IP地址和端口號(hào)。

  (2)Socket(Stringhost,int port)

  使用該構(gòu)造方法在創(chuàng)建Socket對(duì)象時(shí),會(huì)根據(jù)參數(shù)去連接在指定地址和端口上運(yùn)行的服務(wù)器程序,其中參數(shù)host接收的是一個(gè)字符串類型的IP地址。

  (3)Socket(InetAddress address,int port)

  該構(gòu)造方法在使用上與第二個(gè)構(gòu)造方法類似,參數(shù)address用于接收一個(gè)IntelAddress類型的對(duì)象,該對(duì)象用于封裝一個(gè)IP地址。

  Socket的常用方法如下所示:

  1.int getPort():該方法返回一個(gè)int類型對(duì)象,該對(duì)象是Socket對(duì)象與服務(wù)器端連接的端口號(hào)

  2.inetAddress getLocalAddress():該方法用于獲取Socket對(duì)象綁定的本地IP地址,并將IP地址封裝成InetAddress類型的對(duì)象返回。

  3.void close():該方法用于關(guān)閉Socket連接,結(jié)束本次通信。在關(guān)閉Socket之前,應(yīng)將與Socket相關(guān)的所有的輸入/輸出流全部關(guān)閉,這是因?yàn)橐粋€(gè)良好的程序應(yīng)該在執(zhí)行完畢時(shí)釋放所有的資源。

  4.InputStream getInputStream():該方法返回一個(gè)InputStream類型的輸入流對(duì)象,如果該對(duì)象是由服務(wù)器端的Socket返回,就用于讀取客戶端發(fā)送的數(shù)據(jù),反之,用于讀取服務(wù)器端的發(fā)送的數(shù)據(jù)。

  5.OutputStream getOutputStream():該方法返回一個(gè)OutputStream類型的輸出流對(duì)象,如果該對(duì)象是由服務(wù)器端的Socket返回,就用于向客戶端發(fā)送數(shù)據(jù),反之,用于向服務(wù)器端發(fā)送數(shù)據(jù)。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!