摘要:換句話說,套接字起到通信端點的作用。單個套接字是一個端點,而一對套接字則構成一個雙向通信信道,使非關聯進程可以在本地或通過網絡進行數據交換。
大家好,我是樂字節小樂,上次給大家講述了Java中的IO流之輸出流|樂字節,本文將會給大家講述網絡編程。
主要內容如下:
網絡
網絡分層
列表項目
IP位置
端口port
網絡編程
一、 網絡 1、概念網絡即將不同區域的電腦連接到一起, 組成局域網、城域網或廣域網。把分布在不同地理區域的計算機與專門的外部設備用通信線路互連成一個規模大、功能強的網絡系統,從而使眾多的計算機可以方便地互相傳遞信息,共享硬件、軟件、數據信息等資源。
? 資源共享
? 信息傳輸與集中處理
? 均衡負荷與分布處理
計算機網絡中實現通信必須有一些約定即通信協議,對速率、傳輸代碼、代碼結構、傳
輸控制步驟、出錯控制等制定標準。
4、網絡通信接口為了使兩個結點之間能進行對話,必須在它們之間建立通信工具(即接口),使彼此之間能進行信息交換。接口包括兩部分:
? 硬件裝置: 實現結點之間的信息傳送;
? 軟件裝置: 規定雙方進行通信的約定協議
由于結點之間聯系很復雜,在制定協議時,把復雜成份分解成 一些簡單的成份,再將它們復合起來。最常用的復合方式是層次方式,即同層間可以通信、上一層可以調用下一層,而與再下一層不發生關系。
1、 通信協議的分層 2、封裝封裝:從上往下,加入相關層的協議控制信息
拆封:獲取數據,從下往上,去除相關層的協議的控制信息
( IP) 是 Internet Protocol 的外語縮寫, 網絡之間互連的協議也就是為計算機網絡相互連接進行通信而設計的協議。 在因特網中,它是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在因特網上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守 IP 協議就可以與因特網互連互通。
端口:區分數據流向的軟件 0-65535 不要使用 1024 以下的端口 ,每一個協議擁有自己的端口,在同一個協議下端口不能重復 FTP:21 HTTP:80
四、端口:port端口是虛擬的概念,并不是說在主機上真的有若干個端口。通過端口,可以在一個主機上運行多個網絡應用程序。可以類比為:IP 相當于公司,端口相當于公司各部門,URL,相當于各部門的人員。
五、資源的傳輸協議TCP:TCP(transfer control protocol) 打電話 面向連接、安全、可靠,效率低
UDP:UDP(UserDatagramProtocol ) 發送短信 非面向連接、不安全、數據可能丟失 、效率高
封裝計算機的 ip 地址和 DNS( Domain Name System,域名系統) ,沒有端口。
1)、方法
InetAddress.getLocalHost();
InetAddress.getByName("http://www.163.com");
InetAddress.getByName("223.87.1.58")
2) 、方法
getHostAddress() 返回 ip 地址
getHostName() 返回域名|本機為計算機名
包含端口,用于 socket 通信的
1) 、獲取對象
InetSocketAddress(String hostname, int port)
InetSocketAddress(InetAddress addr, int port)
2) 、方法
getAddress() 返回 InetAddress 對象
getPort() 返回端口
getHostName() 返回域名
1) 、URI(Uniform resource identifier)
統一資源標識符, 用來唯一的標識一個資源。
2) 、URL( Uniform Resource Locator)
統一資源定位器,它是一種具體的 URI 。統一資源定位符,由 4 部分組成:協議 、存
放資源的主機域名、資源文件名和端口號。 URL是指向互聯網“資源”的指針。資源可以是簡單的文件或目錄,也可以是對更為復雜的對象的引用,例如對數據庫或搜索引擎的查詢。
3) 、網絡爬蟲原理
public static void main(String[] args) throws IOException { URL url=new URL("http://www.baidu.com");//主頁 默認資源 //獲取資源 網絡流 可能會出現亂碼:1、字節數不夠 2、編碼解碼格式不統一 /*InputStream is=url.openStream(); byte[]flush=new byte[1024]; int len=0; while(-1!=(len=is.read(flush))){ System.out.println(new String(flush,0,len)); } is.close();*/ BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8")); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("baidu2.html"),"utf-8")); String msg=null; while((msg=br.readLine())!=null){ //將網絡內容下載到本地。然后進行數據分析,建立索引,這也是搜索引擎的第一步。 bw.append(msg); bw.newLine();//新增方法 插入換行符 } bw.flush();//強制刷出 bw.close(); br.close();}4、UDP編程: DatagramSocket DatagramPacket
UserDatagramProtocol,一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。其特點為:非面向連接;傳輸不可靠;數據可能丟失。
1)、服務器:
①創建服務器 DatagramSocket類 +指定端口
②準備接收容器 字節數組 +封裝成DatagramPacket數據包
③接收數據
④分析數據
⑤釋放資源
2)、客戶端:
①創建客戶端 DatagramSocket類 +指定端口
②準備數據 字節數組
③封裝成數據包 需要指定包發送的地址+端口 即服務器地與端口
④發送數據
⑤釋放資源
transfer control protocol,一種面向連接(連接導向)的、可靠的、基于字節流的傳輸層(Transport layer)通信協議的點到點的通信 。TCP 三次握手(Three-way Handshake),類似于撥打電話
1) 、特點
基于 tcp 協議,建立穩定連接的點對點的通信;實時、快速、安全性高、占用系統資源多、效率低;“請求-響應”模式:
a)、客戶端:在網絡通訊中,第一次主動發起通訊的程序被稱作客戶端(Client)程序
b)、服務器:第一次通訊中等待連接的程序被稱作服務器端(Server)程序
? Socket:發送 TCP 消息
? ServerSocket:創建服務器
套接字是一種進程間的數據交換機制。這些進程既可以在同一機器上,也可以在通過網
絡連接的不同機器上。換句話說,套接字起到通信端點的作用。單個套接字是一個端點,
而一對套接字則構成一個雙向通信信道,使非關聯進程可以在本地或通過網絡進行數據
交換。一旦建立套接字連接,數據即可在相同或不同的系統中雙向或單向發送,直到其
中一個端點關閉連接
2) 、服務器:
①創建服務器 指定端口
②等待客戶端連接
③分析接收數據
3) 、客戶端:
①連接服務器: 創建客戶端 +指定服務器地址 +端口
②發送數據
樂字節原創,轉載請注明出處。
關于網絡編程就講到這里了,更多Java干貨請繼續關注樂字節。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75878.html
摘要:注意很多多線程是模擬出來的,真正的多線程是指有多個,即多核如服務器。對于目前的大家來說,線程掌握以下即可創建線程的方式停止線程簡單的關于多線程的概念和優缺點就介紹到這,下一篇將會講講如何創建多線程。 大家好,樂字節小樂有來咯,上次說完了Java網絡編程探究|樂字節,這次我們來看看線程相關的吧。 Java線程主要講述的內容有:showImg(https://segmentfault.co...
摘要:大家好,我是樂字節的小樂,這次要給大家帶來的是變量與數據類型。本文是第一集編程規范,關鍵字與標識符。后面我們要寫一個程序的過程。需求分析實現代碼體現注釋的作用解釋說明程序,提高了代碼的閱讀性。可以幫助我們調試程序。 大家好,我是樂字節的小樂,這次要給大家帶來的是Java變量與數據類型。本文是第一集:Java編程規范,關鍵字與標識符。showImg(https://segmentfaul...
摘要:二面向對象概述面向過程的設計思想和面向對象的設計思想我要吃魚香肉絲蓋飯面向過程我買菜我洗菜我切菜我放水我點火我做飯我炒菜。。。。 大家好,上次我們講過了樂字節Java編程之方法、調用、重載、遞歸,接下來我們將會進入到Java封裝的內容。Java編程語言發展,面向對象和類。 一、編程語言的發展 機器語言——直接由計算機的指令組成,指令、數據、地址都以0和1組成:可以被計算機直接識別并執行...
摘要:一的編寫新建一個文件的擴展名顯示出來編寫代碼,以類為單位編寫,編寫入口函數方法類名最好與文件名一致程序的入口以分號結尾通過命令完成編譯操作需要寫文件的完整路徑運行程序,運行文件字節碼文件通過命令完成執行如下命令其中是用來指定路徑。 今天,我們來寫一段Java程序。然后看看Java程序是如何執行的,以及Java新手小白遇到的問題和解決辦法。 一、HelloWorld的編寫 ① 新建一個X...
摘要:流分類由此可見,流很龐大從不同角度進行分類數據分類按處理數據單位分為字節流和字符流。處理數據是音頻視頻文本等一切為字節流,僅能處理文本的為字符流。功能分類節點流和處理流。從向一個特定的設備磁盤網絡等讀寫數據的流稱為節點流,也常被稱為低級流。 嗨嘍,小樂又來了,今天要給大家送上的技術文章是Java重點知識-IO流。 先來看看IO流的思維導圖吧。showImg(https://segmen...
閱讀 5052·2021-11-25 09:43
閱讀 1695·2021-10-27 14:18
閱讀 1063·2021-09-22 16:03
閱讀 1355·2019-08-30 13:19
閱讀 1579·2019-08-30 11:15
閱讀 1649·2019-08-26 14:04
閱讀 3127·2019-08-23 18:40
閱讀 1168·2019-08-23 18:17