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