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