摘要:三端口與套接字端口指一臺計(jì)算機(jī)只有單一的連接到網(wǎng)絡(luò)的物理連接,所以的數(shù)據(jù)都通過此連接對內(nèi)對外送達(dá)特定的計(jì)算機(jī),這就是端口。三程序設(shè)計(jì)由上面可知基于的信息傳遞速度更快。接收數(shù)據(jù)包使用創(chuàng)建數(shù)據(jù)包套接字,綁定指定端口。
服務(wù)器 <-----> 網(wǎng)絡(luò) <-------> 客戶機(jī)
第一部分
一.局域網(wǎng)與因特網(wǎng)
服務(wù)器是指提供信息的計(jì)算機(jī)或程序,客戶機(jī)是指請求信息的計(jì)算機(jī)或程序,而網(wǎng)絡(luò)是用于連接服務(wù)器的與客戶機(jī),實(shí)現(xiàn)相互通信。
局域網(wǎng)(Local Area Network ,LAN)指一群通過一定形式連接起來的計(jì)算機(jī)。
廣域網(wǎng)(Wide Area Network , WAN)指由無數(shù)的LAN組成,也就是熟稱的因特網(wǎng)(Internet)
二.網(wǎng)絡(luò)協(xié)議
網(wǎng)絡(luò)協(xié)議指計(jì)算機(jī)之間連接的物理,機(jī)械,電氣(有效的電平范圍)等特性。
1.IP協(xié)議(Internet Protocol) Intrenet采用的協(xié)議是TCP/IP協(xié)議(Transmisssion Control Protocol/Internet Protocol).每一臺主機(jī)在網(wǎng)絡(luò)上用為其分配的Internet地址來代表自己,這個(gè)地址就是IP地址,目前用4個(gè)字節(jié)來表示自己,也就是32為的二進(jìn)制書來表示,稱為IPv4,為了方便使用,通常用十進(jìn)制數(shù)表示,如 192.10.0.1 。4個(gè)8位二進(jìn)制最大值也就是 255.255.255.255 。 2.TCP 與 UDP 協(xié)議 TCP可以保證從一端數(shù)據(jù)傳送到連接的另一端時(shí),數(shù)據(jù)能夠確實(shí)送達(dá),而且抵達(dá)的數(shù)據(jù)的排列順序和送出的順序相同,因此TCP協(xié)議適合可靠性要求比較高的場合。 HTML,F(xiàn)TP,Telnet等都需要可靠的通信頻道。 UDP(User Datagram Protocol ,UDP)無連接通信協(xié)議,不保證可靠數(shù)據(jù)傳送。適合對數(shù)據(jù)準(zhǔn)確性要求不高的場合。如網(wǎng)路聊天,在線影片等。
三.端口與套接字
端口指一臺計(jì)算機(jī)只有單一的連接到網(wǎng)絡(luò)的物理連接,所以的數(shù)據(jù)都通過此連接對內(nèi)、對外送達(dá)特定的計(jì)算機(jī),這就是端口。
那么來看看端口與網(wǎng)絡(luò)協(xié)議有什么關(guān)系:
網(wǎng)絡(luò)協(xié)議好比一棟房子,而端口就是房子的那些門,不過這些門有很多,65535個(gè)!數(shù)據(jù)就是從這些門進(jìn)進(jìn)出出的。 而這些65536個(gè)端口的任務(wù)是有所分配,如在TCP協(xié)議中的HTTP服務(wù)一般使用80端口,F(xiàn)TP服務(wù)一般使用21端口。
前面提到的TCP與UDP協(xié)議,兩種協(xié)議不同因此各自的端口號也各自獨(dú)立,如TCP有220端口,UDP也有220端口,并不沖突。
第二部分
一 InterAddress類
在java.net包中的InetAddresss類是與IP地址相關(guān)的類,利用該類可以獲取IP地址,主機(jī)地址IP地址等信息。
```
import java.net.*; public class Address { // 創(chuàng)建類 public static void main(String[] args) { InetAddress ip; // 創(chuàng)建InetAddress對象 try { // try語句塊捕捉可能出現(xiàn)的異常 ip = InetAddress.getLocalHost(); // 實(shí)例化對象(應(yīng)為這里的 //geiLocalHost() 方法返回的值是InteAddress 對象) String localname = ip.getHostName(); // 獲取本機(jī)名 String localip = ip.getHostAddress(); // 獲取本IP地址 System.out.println("HostName:" + localname);// 將本機(jī)名輸出 System.out.println("HostAddress:" + localip); // 將本機(jī)IP輸出 } catch (UnknownHostException e) { e.printStackTrace(); // 輸出異常信息 } } }
二.ServerSocket類:
服務(wù)器與客戶機(jī)之間的連接就需要有一個(gè)媒介,而ServerSocket類提供了這個(gè)媒介,用于表示服務(wù)器套接字,主要功能是等待來自網(wǎng)絡(luò)上的“請求”。
ServerSocke類的accept()方法會(huì)會(huì)返回一個(gè)和客戶端Socket對象相連接的Socket對象,當(dāng)服務(wù)器向輸出流寫入信息時(shí),客戶端通過相應(yīng)的輸入流就能讀取,反之亦然。getInputStream()方法獲得輸入流,getOutputStream()方法獲得輸出流。
三.UDP程序設(shè)計(jì):
由上面可知基于UDP的信息傳遞速度更快?;赨DP通信的基本模式如下:
1.將數(shù)據(jù)打包(數(shù)據(jù)包),讓后將數(shù)據(jù)包發(fā)送到目的地。
2.接收別的機(jī)器發(fā)來的數(shù)據(jù)包,查看數(shù)據(jù)包。
步驟如下:
發(fā)送數(shù)據(jù)包:
1.使用DatagramSocket()創(chuàng)建一個(gè)數(shù)據(jù)包套接字。
2.使用DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)創(chuàng)建要發(fā)送的數(shù)據(jù)包。
3.使用DatagramStorket類的send()方法發(fā)送數(shù)據(jù)包。
接收數(shù)據(jù)包:
1.使用DatagramStoket(int port)創(chuàng)建數(shù)據(jù)包套接字,綁定指定端口。
2.使用DatagramPacket(byte[]buf,int lrngth)創(chuàng)建字節(jié)數(shù)組接收數(shù)據(jù)包。
3.使用DatagramPacket類的receive()方法接收UDP包。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64268.html
摘要:而面向搜索引擎,就是我們要及時(shí)的使用百度谷歌遇到問題無法解決,先別急著放棄,可以去網(wǎng)絡(luò)尋找答案,你的坑大部分別人都已經(jīng)走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語言,到底哪一門才是適合我的?●我們?yōu)槭裁匆獙W(xué)習(xí)Java語言呢...
摘要:文本已收錄至我的倉庫,歡迎回顧上一篇大型網(wǎng)站系統(tǒng)與中間件讀書筆記一這周周末讀了第四章,現(xiàn)在過來做做筆記,希望能幫助到大家。沒錯(cuò),我們通過肯定是可以完成兩個(gè)系統(tǒng)之間的通信的問題的。 前言 只有光頭才能變強(qiáng)。文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y 回顧上一篇: 《大型網(wǎng)站系統(tǒng)與Java中間件》讀書筆記(一)...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:對于的一些基礎(chǔ)知識,你可以輕而易舉的找到對應(yīng)相關(guān)的與實(shí)戰(zhàn),同時(shí)其針對性也強(qiáng)。淺顯的說了一下,可能你對于基礎(chǔ)是對于應(yīng)用,其實(shí)基本的思路也是差不多的,沒有什么是捷徑,唯一有的就是不停的學(xué)習(xí)與摸索。 本文首發(fā)于本博客 貓叔的博客,轉(zhuǎn)載請申明出處 感謝粉絲的提問:Java基礎(chǔ)差,需要怎么補(bǔ)? 我整體的總結(jié)了一下,大致分為以下的幾個(gè)點(diǎn)說一下: 1、善于使用搜索引擎 現(xiàn)在的網(wǎng)上資源基本是不缺的,缺...
摘要:開頭正式開啟我入職的里程,現(xiàn)在已是工作了一個(gè)星期了,這個(gè)星期算是我入職的過渡期,算是知道了學(xué)校生活和工作的差距了,總之,盡快習(xí)慣這種生活吧。當(dāng)時(shí)是看的廖雪峰的博客自己也用做爬蟲寫過幾篇博客,不過有些是在前人的基礎(chǔ)上寫的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開頭 2017.08.21 正式開啟我...
閱讀 2394·2019-08-30 15:56
閱讀 1052·2019-08-30 15:55
閱讀 3214·2019-08-30 15:44
閱讀 942·2019-08-30 10:53
閱讀 1896·2019-08-29 16:33
閱讀 2500·2019-08-29 16:13
閱讀 728·2019-08-29 12:41
閱讀 884·2019-08-26 13:56