定義
????????計算機(jī)網(wǎng)絡(luò)
????????????????是指將地理位置不同的具有獨立功能的多臺計算機(jī)及其外部設(shè)備,通過通信線路連接起來瞳别,在網(wǎng)絡(luò)操作系統(tǒng)征候,網(wǎng)絡(luò)管理軟件及網(wǎng)絡(luò)通信協(xié)議的管理和協(xié)調(diào)下,實現(xiàn)資源共享和信息傳遞的計算機(jī)系統(tǒng)
????????網(wǎng)絡(luò)編程
????????????????用來實現(xiàn)網(wǎng)絡(luò)互連的不同計算機(jī)上運行的程序間可以進(jìn)行數(shù)據(jù)交換
IP地址
????????????每個設(shè)備在網(wǎng)絡(luò)中的唯一標(biāo)識
????????????每臺網(wǎng)絡(luò)終端在網(wǎng)絡(luò)中都有一個獨立的地址祟敛,我們在網(wǎng)絡(luò)中傳輸數(shù)據(jù)就是使用這個地址
????????????ipconfig:查看本機(jī)IP
????????????ping:測試連接
????????????本地回路地址:127.0.0.1
????????????IPv4:4個字節(jié)組成疤坝,4個0-255。大概42億馆铁,30億都在北美跑揉,亞洲4億。2011年初已經(jīng)用盡
????????????IPv6:8組埠巨,每組4個16進(jìn)制數(shù)
端口號
????????????每個程序在設(shè)備上的唯一標(biāo)識
????????????每個網(wǎng)絡(luò)程序都需要綁定一個端口號历谍,傳輸數(shù)據(jù)的時候除了確定發(fā)到哪臺機(jī)器上,還要明確發(fā)到哪個程序
????????????端口號范圍從0-65535
????????????編寫網(wǎng)絡(luò)應(yīng)用就需要綁定一個端口號乖订,盡量使用1024以上的扮饶,1024以下的基本上都被系統(tǒng)程序占用了
協(xié)議
????????為計算機(jī)網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或約定的集合乍构。
????????????????UDP
????????????????????????面向無連接甜无,數(shù)據(jù)不安全,速度快哥遮。不區(qū)分客戶端與服務(wù)端岂丘。
????????????????TCP
????????????????????????面向連接(三次握手),數(shù)據(jù)安全眠饮,速度略低奥帘。分為客戶端和服務(wù)端。
????????????????????????三次握手: 客戶端先向服務(wù)端發(fā)起請求, 服務(wù)端響應(yīng)請求, 客戶端發(fā)送確認(rèn)信息
二. Socket通信
? ??????定義
????????????????網(wǎng)絡(luò)上具有唯一標(biāo)識的IP地址和端口號組合在一起才能構(gòu)成唯一能識別的標(biāo)識符套接字
????????????????通信的兩端都有Socket
????????????????網(wǎng)絡(luò)通信其實就是Socket間的通信
????????????????數(shù)據(jù)在兩個Socket間通過IO流傳輸
????????????????Socket在應(yīng)用程序中創(chuàng)建仪召,通過一種綁定機(jī)制與驅(qū)動程序建立關(guān)系寨蹋,告訴自己所對應(yīng)的 IP和port
三. UDP傳輸
? ??????發(fā)送Send
????????????????創(chuàng)建DatagramSocket, 隨機(jī)端口號
????????????????創(chuàng)建DatagramPacket, 指定數(shù)據(jù), 長度, 地址, 端口
????????????????使用DatagramSocket發(fā)送DatagramPacket
????????????????關(guān)閉DatagramSocket
? ??????接收Receive
????????????????創(chuàng)建DatagramSocket, 指定端口號
????????????????創(chuàng)建DatagramPacket, 指定數(shù)組, 長度
????????????????使用DatagramSocket接收DatagramPacket
????????????????關(guān)閉DatagramSocket
????????????????從DatagramPacket中獲取數(shù)據(jù)
? ??????接收方獲取ip和端口號
????????????????String ip = packet.getAddress().getHostAddress();
????????????????int port = packet.getPort();
五. TCP協(xié)議
? ??????定義
????????????????客戶端和服務(wù)器間的交流, 客戶端發(fā)送信息,服務(wù)器接收到,并返回信息
????????????????長連接
? ??????使用步驟
????????????客戶端
????????????????????創(chuàng)建Socket連接服務(wù)端(指定ip地址,端口號)通過ip地址找對應(yīng)的服務(wù)器
????????????????????調(diào)用Socket的getInputStream()和getOutputStream()方法獲取和服務(wù)端相連的IO流
????????????????????輸入流可以讀取服務(wù)端輸出流寫出的數(shù)據(jù)
????????????????????輸出流可以寫出數(shù)據(jù)到服務(wù)端的輸入流
? ??????????服務(wù)端
????????????????????創(chuàng)建ServerSocket(需要指定端口號)
????????????????????調(diào)用ServerSocket的accept()方法接收一個客戶端請求,得到一個Socket
????????????????????調(diào)用Socket的getInputStream()和getOutputStream()方法獲取和客戶端相連的IO流
????????????????????輸入流可以讀取客戶端輸出流寫出的數(shù)據(jù)
????????????????????輸出流可以寫出數(shù)據(jù)到客戶端的輸入流
總結(jié):
? ??????網(wǎng)絡(luò)傳輸?shù)母攀?/b>
????????????????ip : 通過ip可以找到網(wǎng)絡(luò)中的一臺機(jī)器
????????????????port :? 通過端口號可以找到電腦中某個程序
????????????????ip+port : 一個套接字
????????????????udp :? 快, 不安全 面向無連接
????????????????tcp :? 慢 ,安全? 面向有鏈接
? ??????UDP 編碼
????????????????DatagramSocket
????????????????DatagramPacket
????????????????DatagramPacket包裹著ip地址,端口號, 數(shù)據(jù), DatagramSocket發(fā)送包裹
????????????????接收端和發(fā)送端時平等的
? ??????TCP編程
????????????????Socket?
????????????????ServerSocket
????????????????ServerSocket可以接收多個Socket? , 每接收一個客戶端連接, 就會創(chuàng)建一個Socket 和客戶端通信
????????????????TCP的最大優(yōu)點 : 兩端是由一個通道連接, 可以隨意傳輸數(shù)據(jù), 不會受數(shù)據(jù)量大小的限制
????????????????服務(wù)端一般和多線程配合使用