2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Java培訓之IO流&網絡編程(二)

更新時間:2017-05-31 來源:黑馬程序員Java培訓學院 瀏覽量:

網絡模型:|--OSI(open stystem Interconnection開放式系統互連)
|--特點:
是一種異構系統互連的分層結構;提供了控制互連系統交互規則的標準骨架;定義一種抽象結構,而并非具體實現的描述;不同系統中相同層的實體為同等層實體;同等層實體之間通信由該層的協議管理;相信層間的接口定義了原語操作和低層向上層提供的服務;所提供的公共服務是面向連接的或無連接的數據服務;直接的數據傳送僅在最低層實現;每層完成所定義的功能,修改本層的功能并不影響其他層。
|--七層結構:
物理層: 提供為建立、維護和拆除物理鏈路所需要的機械的、電氣的、功能的和規程的特性;有關的物理鏈路上傳輸非結構的位流以及故障檢測指示。
數據鏈路層:在網絡層實體間提供數據發送和接收的功能和過程;提供數據鏈路的流控。
網絡層: 控制分組傳送系統的操作、路由選擇、擁護控制、網絡互連等功能,它的作用是將具體的物理傳送對高層透明。
傳輸層: 提供建立、維護和拆除傳送連接的功能;選擇網絡層提供最合適的服務;在系統之間提供可靠的透明的數據傳送,提供端到端的錯誤恢復和流量控制。TCP(傳輸控制協議)傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據,UDP(用戶數據報協議,于TCP特性恰恰相反)用于傳輸可靠性要求 不高,數據量小的數據,如QQ聊天數據就是通過這種方式進行傳輸。
會話層: 提供兩進程之間建立、維護和結束會話連接的功能;提供交互會話的管理功能,如三種數據流方向的控制,即一路交互、兩路交替和兩路同時會話模式 。
表示層: 代表應用進程協商數據表示;完成數據轉換、格式化和文本壓縮。
應用層: 提供OSI用戶服務,例如事務處理程序、文件傳送協議和網絡管理等。
|--TCP/IP:
|--TCP/IP的分層模型
Internet采用了TCP/IP協議,如同OSI參考模型,TCP/IP也是一種分層模型。
它是基于硬件層次上的四個概念性層次構成,即網絡接口層、IP層、傳輸層、應用層。
網絡接口層:也稱數據鏈路層,這是TCP/IP最底層。功能:負責接收IP數據報并發送至選定的網絡。
IP層:IP層處理機器之間的通信。功能:它接收來自傳輸層的請求,將帶有目的地址的分組發送出去。將分組封裝到數據報中,填入數據報頭,使用路由算法以決定是直接將數據報傳送至目的主機還是傳給路由器,然后把數據報送至相應的網絡接口來傳送。
傳輸層:是提供應用層之間的通信,即端到端的通信。功能:管理信息流,提供可靠的傳輸服務,以確保數據無差錯的地按序到達。
2、TCP/IP模型的分界線
協議地址分界線:以區分高層和低層的尋址,高層尋址使用IP地址,低層尋址使用物理地址。應用程序IP層之上的協議軟件只使用IP地址,而網絡接口層處理物理地址。
網絡通信要素|--IP地址:網絡中設備的標示
127.0.0.1本地回環地址 主機名:localhost
IP地址不能沖突,但是可以重復,在不同的網絡中的是可以重復的。
|--端口號:用于表示進程的邏輯地址,不同進程的標示,有效端口:0`65535其中0~1024系統使用或者保留端口,
|--物理端口:即我們看的見的端口,比如網卡端口
|--邏輯端口:就是些數字標示。
|--傳輸協議:
|--TCP:
|--特點:
建立連接,形成傳輸數據的通道在連接中進行大數據量傳輸通過三次握手完成連接,是可靠協議,一旦連接斷開數據就不存在了必須建立連接、效率會稍低|--UDP:
|--特點:
將數據以及源和目的封裝成數據包,不需要建立連接每個數據報的大小在限制的64K內因無連接,是不可靠的協議不要建立連接 ,速度快。IP地址對象:InetAddress:互聯網協議地址
getLocalHost();返回本地主機
getHostName();獲取主機名
getByName();
getAllByName();
地址解析:直接通過IP地址可以訪問新浪的主機,同時也可以通過主機名去訪問。
百度校招筆試題:URL有哪幾個部分組成?協議、主機、端口、文件
DNS域名解析:客戶端輸入主機名去查找DNS服務器,查找對應的IP地址,然后返回它客戶端在根據IP地址指向所要去訪問的主機。
擴展:怎么去進制掉上網過程中彈出的小廣告
去配置文件中一下面的格式配置即可
127.0.0.1  www.XXXX.com
eg:127.0.0.1 www.sina.com表示禁止不能上新浪網.
Socket插座 (專業術語:套接字)
就是為網絡服務提供的一種機制。
通信的兩端都有Socket
網絡通信其實就Socket間通信
數據在兩個socket間通過IO傳輸。怎么去理解?
從這個設備傳輸到另外一個設備,其實就是流的操作。
UDP傳輸:DatagramSocket和 DatagramPacket
封裝了UPD的傳輸協議,此類表示用來發送和接收數據包的套接字。
receive(DatagramPacket p)和send(DatagramPacket p);
在構造包時要注意,有些包是用來構造接收數據包,有些是構造發送數據包
怎么去區分:在構造函數中凡是帶有Address的都是構造發送數據包的。
UDP發送和接收端建立連接的思路:
啟動發送端和接收端都可以,啟動哪一個都是可以的。
實現代碼:
發送端:
//1、先建立UDP的socket服務。
DatagramSocket ds=new DatagramSocket();
//2、確定具體的數據。
String str="UDP,我來了!";//因為只能接受字節數組,所以下面要用字節數組封裝起來
byte[] buf=str.getBytes();
// 3、創建數據包對象將數據進行封裝,并明確目的地地址。
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.104"),10000);
// 4、使用socket服務的send方法將數據包發送出去。
ds.send(dp);
//  5、關閉資源。
ds.close();
接收端:
System.out.println("接收端啟動.....");
// 1、建立UDP的socket服務,必須一個具體的數字標示,明確是哪個端口的數據是這個程序是可以處理的。
DatagramSocket ds=new DatagramSocket(10000);
// 2、創建一個數據包對象,用于存儲接收到的數據
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf, buf.length);
// 3、使用socket服務接收數據并存儲到已有的數據包當中
ds.receive(dp);
// 4、從數據包中獲取指定的數據,并打印
String ip=dp.getAddress().getHostAddress();
int port=dp.getPort();
String text=new String(dp.getData(),0,dp.getLength());
System.out.println(ip+""+text+""+port);
// 5、關閉socket服務
ds.close();
注意輸出結果中:
接收端啟動.....
192.168.1.104UDP,我來了!1364: 這個端口是發送端的。系統會隨機分配。

本文版權歸黑馬程序員Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:黑馬程序員Java培訓學院
首發:http://javaee.itheima.com/
 
分享到:
在線咨詢 我要報名
和我們在線交談!