柚子快報(bào)邀請(qǐng)碼778899分享:Java網(wǎng)絡(luò)
柚子快報(bào)邀請(qǐng)碼778899分享:Java網(wǎng)絡(luò)
?? ?java.net包下提供了一系列的類(lèi)和接口,用來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通信。
一、InetAddress類(lèi)
1.獲取本機(jī)InetAddress對(duì)象 getLoaclHost
2.根據(jù)指定主機(jī)名/域名獲取ip地址對(duì)象 getByName
3.獲取InetAddress對(duì)象的主機(jī)名 getHostName
4.獲取InetAddress對(duì)象的地址 getHostAddress
二、Socket類(lèi)
1.通信兩端都要有Socket,這是弊端。
2.網(wǎng)絡(luò)通信就是Socket之間的通信
3.Socket允許程序把網(wǎng)絡(luò)連接當(dāng)作一個(gè)流,數(shù)據(jù)在兩個(gè)Socket之間通過(guò)IO傳輸。
4.一般主動(dòng)發(fā)起通信的應(yīng)用程序?qū)儆诳蛻?hù)端,等待通信請(qǐng)求的為服務(wù)器。
三、TCP編程
服務(wù)器套接字——ServerSocket類(lèi):
?? ?這個(gè)類(lèi)實(shí)現(xiàn)了服務(wù)器套接字。 服務(wù)器套接字等待通過(guò)網(wǎng)絡(luò)進(jìn)入的請(qǐng)求。 它根據(jù)該請(qǐng)求執(zhí)行一些操作,然后可能將結(jié)果返回給請(qǐng)求者。
?? ?服務(wù)器套接字的實(shí)際工作由SocketImpl類(lèi)的實(shí)例執(zhí)行。 應(yīng)用程序可以更改創(chuàng)建套接字實(shí)現(xiàn)的套接字工廠,以配置自己創(chuàng)建適合本地防火墻的套接字。
構(gòu)造方法:
常用方法:
? ? 使用accept()方法,當(dāng)有客戶(hù)端進(jìn)行連接時(shí),將返回一個(gè)Socket對(duì)象。
客戶(hù)端套接字——Socket:
?? ?該類(lèi)實(shí)現(xiàn)客戶(hù)端套接字(也稱(chēng)為“套接字”)。 套接字是兩臺(tái)機(jī)器之間通訊的端點(diǎn)。
?? ?套接字的實(shí)際工作由SocketImpl類(lèi)的實(shí)例執(zhí)行。 應(yīng)用程序通過(guò)更改創(chuàng)建套接字實(shí)現(xiàn)的套接字工廠,可以配置自己創(chuàng)建適合本地防火墻的套接字。
構(gòu)造方法:
方法:
注意:
? ? 1.使用IO流傳輸數(shù)據(jù)時(shí),使用IO流對(duì)象的close()方法同時(shí)會(huì)關(guān)閉socket,用socket.shutdown...put()即可。
?? ?2.當(dāng)客戶(hù)端連接服務(wù)器之后,服務(wù)器也會(huì)隨機(jī)分配一個(gè)端口,使用客戶(hù)端的這個(gè)端口連接客戶(hù)端。
netstat指令:
1.netstat -an 可以查看當(dāng)前主機(jī)網(wǎng)絡(luò)情況,包括端口監(jiān)聽(tīng)情況和網(wǎng)絡(luò)連接情況。
2.netstat -an | more 可以分頁(yè)顯示
3.要求在dos控制臺(tái)下執(zhí)行。
四、UDP網(wǎng)絡(luò)編程
1.類(lèi)DatagramSocket 和 DatagramPacket實(shí)現(xiàn)了基于UDP協(xié)議網(wǎng)絡(luò)程序。
2.UDP數(shù)據(jù)報(bào)通過(guò)套接字DatagramSocket發(fā)送和接收,系統(tǒng)不保證UDP數(shù)據(jù)報(bào)一定能安全到達(dá)目的地。
3.DatagramPacket對(duì)象封裝了UDP數(shù)據(jù)報(bào),在數(shù)據(jù)報(bào)中包含了發(fā)送端以及接收端的IP地址和端口號(hào)。
4.UDP協(xié)議中每個(gè)數(shù)據(jù)報(bào)都給出了完整的地址信息,因此無(wú)需建立發(fā)送方和接收方的連接。
5.接收數(shù)據(jù)和發(fā)送數(shù)據(jù)都是通過(guò)將數(shù)據(jù)封裝到DatagramSocket對(duì)象完成的。
基本流程:
1.建立發(fā)送端,接收端
2.發(fā)送數(shù)據(jù)前,建立數(shù)據(jù)報(bào)DatagramPacket對(duì)象
3.調(diào)用DatagramSocket的發(fā)送、接收方法
4.關(guān)閉DatagramSocket
即DatagramSocket對(duì)象用來(lái)發(fā)送數(shù)據(jù)(DatagramPacket對(duì)象)。
DatagramPocket:
?? ?該類(lèi)表示數(shù)據(jù)報(bào)包。
?? ?數(shù)據(jù)報(bào)包用于實(shí)現(xiàn)無(wú)連接分組傳送服務(wù)。 僅基于該數(shù)據(jù)包中包含的信息,每個(gè)消息從一臺(tái)機(jī)器路由到另一臺(tái)機(jī)器。 從一臺(tái)機(jī)器發(fā)送到另一臺(tái)機(jī)器的多個(gè)分組可能會(huì)有不同的路由,并且可能以任何順序到達(dá)。 包傳送不能保證.
構(gòu)造方法:
方法:
DatagramSocket:
? ??
此類(lèi)表示用于發(fā)送和接收數(shù)據(jù)報(bào)數(shù)據(jù)包的套接字。
?? ?數(shù)據(jù)報(bào)套接字是分組傳送服務(wù)的發(fā)送或接收點(diǎn)。 在數(shù)據(jù)報(bào)套接字上發(fā)送或接收的每個(gè)數(shù)據(jù)包都被單獨(dú)尋址和路由。 從一個(gè)機(jī)器發(fā)送到另一個(gè)機(jī)器的多個(gè)分組可以不同地路由,并且可以以任何順序到達(dá)。
構(gòu)造方法:
方法:
柚子快報(bào)邀請(qǐng)碼778899分享:Java網(wǎng)絡(luò)
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。