免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
20-java筆記-網(wǎng)絡(luò)編程

網(wǎng)絡(luò)編程

1.網(wǎng)絡(luò):

將地理位置不同的具有獨(dú)立功能的多態(tài)計(jì)算機(jī)及其外部設(shè)備,通過通信線路連接起來,在網(wǎng)絡(luò)操作系統(tǒng)、網(wǎng)絡(luò)管理軟件及網(wǎng)絡(luò)通信協(xié)議的管理和協(xié)調(diào)下,實(shí)現(xiàn)資源共享和信息傳遞的資源系統(tǒng)

2.網(wǎng)絡(luò)模型

網(wǎng)絡(luò)模型概述
計(jì)算機(jī)網(wǎng)絡(luò)之間以何種規(guī)則進(jìn)行通信,就是網(wǎng)絡(luò)模型研究問題。
網(wǎng)絡(luò)模型一般是指
OSI(Open System Interconnection開放系統(tǒng)互連)七層參考模型
TCP/IP四層參考模型
主機(jī)至網(wǎng)絡(luò)層(物理層 , 數(shù)據(jù)鏈路層) , 網(wǎng)際層 , 傳輸層 , 應(yīng)用層(應(yīng)用層 , 表示層 , 會話層)

網(wǎng)絡(luò)模型7層概述:
1.物理層:主要定義物理設(shè)備標(biāo)準(zhǔn),如網(wǎng)線的接口類型、光纖的接口類型、各種傳輸介質(zhì)的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉(zhuǎn)化為電流強(qiáng)弱來進(jìn)行傳輸,到達(dá)目的地后在轉(zhuǎn)化為1、0)。 這一層的數(shù)據(jù)叫做比特。

2.數(shù)據(jù)鏈路層:主要將從物理層接收的數(shù)據(jù)進(jìn)行MAC地址(網(wǎng)卡的地址)的封裝與解封裝。常把這一層的數(shù)據(jù)叫做幀。在這一層工作的設(shè)備是交換機(jī),數(shù)據(jù)通過交換機(jī)來傳輸。

3.網(wǎng)絡(luò)層:主要將從下層接收到的數(shù)據(jù)進(jìn)行IP地址(例192.168.0.1)的封裝與解封裝。在這一層工作的設(shè)備是路由器,常把這一層的數(shù)據(jù)叫做數(shù)據(jù)包。

4.傳輸層:定義了一些傳輸數(shù)據(jù)的協(xié)議和端口號(WWW端口80等),如:TCP(傳輸控制協(xié)議,傳輸效率低,可靠性強(qiáng),用于傳輸可靠性要求高,數(shù)據(jù)量大的數(shù)據(jù)),UDP(用戶數(shù)據(jù)報(bào)協(xié)議,與TCP特性恰恰相反,用于傳輸可靠性要求不高,數(shù)據(jù)量小的數(shù)據(jù),如QQ聊天數(shù)據(jù)就是通過這種方式傳輸?shù)模?br>主要是將從下層接收的數(shù)據(jù)進(jìn)行分段和傳輸,到達(dá)目的地址后再進(jìn)行重組。常常把這一層數(shù)據(jù)叫做段。

5.會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數(shù)據(jù)傳輸?shù)耐?。主要在你的系統(tǒng)之間發(fā)起會話或者接受會話請求(設(shè)備之間需要互相認(rèn)識可以是IP也可以是MAC或者是主機(jī)名)
6.表示層:主要是進(jìn)行對接收的數(shù)據(jù)進(jìn)行解釋、加密與解密、壓縮與解壓縮等(也就是把計(jì)算機(jī)能夠識別的東西轉(zhuǎn)換成人能夠能識別的東西(如圖片、聲音等)。
7.應(yīng)用層: 主要是一些終端的應(yīng)用,比如說FTP(各種文件下載),WEB(IE瀏覽),QQ之類的(可以把它理解成我們在電腦屏幕上可以看到的東西.就是終端應(yīng)用)。

3.網(wǎng)絡(luò)編程三要素:

IP(確定某個計(jì)算機(jī))、端口號(確定一個應(yīng)用,如飛秋)、傳輸協(xié)議(UDP、TCP)

A、IP:

規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做IP協(xié)議。它所定義的地址,就被稱為IP地址,標(biāo)示一臺計(jì)算機(jī)的唯一性。

目前,廣泛采用的是IP協(xié)議第四版,簡稱IPv4。這個版本規(guī)定,網(wǎng)絡(luò)地址由32個二進(jìn)制位組成。

習(xí)慣上,我們用分成四段的十進(jìn)制數(shù)表示IP地址,從0.0.0.0一直到255.255.255.255。

互聯(lián)網(wǎng)上的每一臺計(jì)算機(jī),都會分配到一個IP地址。這個地址分成兩個部分,前一部分代表網(wǎng)絡(luò),后一部分代表主機(jī)。比如,IP地址172.16.254.1,這是一個32位的地址,假定它的網(wǎng)絡(luò)部分是前24位(172.16.254),那么主機(jī)部分就是后8位(最后的那個1)。處于同一個子網(wǎng)絡(luò)的電腦,它們IP地址的網(wǎng)絡(luò)部分必定是相同的,也就是說172.16.254.2應(yīng)該與172.16.254.1處在同一個子網(wǎng)絡(luò)。

但是,問題在于單單從IP地址,我們無法判斷網(wǎng)絡(luò)部分。還是以172.16.254.1為例,它的網(wǎng)絡(luò)部分,到底是前24位,還是前16位,甚至前28位,從IP地址上是看不出來的。

那么,怎樣才能從IP地址,判斷兩臺計(jì)算機(jī)是否屬于同一個子網(wǎng)絡(luò)呢?這就要用到另一個參數(shù)"子網(wǎng)掩碼"(subnet mask)。

所謂"子網(wǎng)掩碼",就是表示子網(wǎng)絡(luò)特征的一個參數(shù)。它在形式上等同于IP地址,也是一個32位二進(jìn)制數(shù)字,它的網(wǎng)絡(luò)部分全部為1,主機(jī)部分全部為0。比如,IP地址172.16.254.1,如果已知網(wǎng)絡(luò)部分是前24位,主機(jī)部分是后8位,那么子網(wǎng)絡(luò)掩碼就是11111111.11111111.11111111.00000000,寫成十進(jìn)制就是255.255.255.0。

知道"子網(wǎng)掩碼",我們就能判斷,任意兩個IP地址是否處在同一個子網(wǎng)絡(luò)。方法是將兩個IP地址與子網(wǎng)掩碼分別進(jìn)行AND運(yùn)算(兩個數(shù)位都為1,運(yùn)算結(jié)果為1,否則為0),然后比較結(jié)果是否相同,如果是的話,就表明它們在同一個子網(wǎng)絡(luò)中,否則就不是。

IP地址 = 網(wǎng)絡(luò)地址 主機(jī)地址
A類IP地址:第一段號碼為網(wǎng)絡(luò)地址,剩下的三段號碼為本地計(jì)算機(jī)的號碼

1.0.0.1—127.255.255.254
(1)10.X.X.X是私有地址(私有地址就是在互聯(lián)網(wǎng)上不使用,而被用在局域網(wǎng)絡(luò)中的地址)
(2)127.X.X.X是保留地址,用做循環(huán)測試用的。

B類IP地址:前二段號碼為網(wǎng)絡(luò)地址,剩下的二段號碼為本地計(jì)算機(jī)的號碼

128.0.0.1—191.255.255.254 172.16.0.0—172.31.255.255是私有地址。

C類IP地址:前三段號碼為網(wǎng)絡(luò)地址,剩下的一段號碼為本地計(jì)算機(jī)的號碼

192.0.0.1—223.255.255.254 192.168.x.X是私有地址

D類 224.0.0.1—239.255.255.254
E類 240.0.0.1—247.255.255.254

127.0.0.1 回環(huán)地址,可用于測試本機(jī)的網(wǎng)絡(luò)是否有問題. ping 127.0.0.1
DOS命令 ipconfig:查看本機(jī)IP地址
xxx.xxx.xxx.255 廣播地址

B、協(xié)議

UDP:

將數(shù)據(jù)源和目的封裝成數(shù)據(jù)包中,不需要建立連接;
每個數(shù)據(jù)報(bào)的大小在限制在64k;
因無連接,是不可靠協(xié)議;
不需要建立連接,速度快

TCP:

建立連接,形成傳輸數(shù)據(jù)的通道;
在連接中進(jìn)行大數(shù)據(jù)量傳輸;
需要連接所以是可靠協(xié)議;
必須建立連接,效率會稍低

C、端口

端口號(確定一個應(yīng)用,如飛秋)

TCP與UDP段結(jié)構(gòu)中端口地址都是16比特,可以有在0—65535范圍內(nèi)的端口號。對于這65536個端口號有以下的使用規(guī)定:

(1)端口號小于256的定義為常用端口,服務(wù)器一般都是通過常用端口號來識別的。任何TCP/IP實(shí)現(xiàn)所提供的服務(wù)都用1—1023之間的端口號,是由ICANN來管理的;

(2)客戶端只需保證該端口號在本機(jī)上是惟一的就可以了。客戶端口號因存在時間很短暫又稱臨時端口號;

(3)大多數(shù)TCP/IP實(shí)現(xiàn)給臨時端口號分配1024—5000之間的端口號。大于5000的端口號是為其他服務(wù)器預(yù)留的

4、Socket

套接字=IP 端口

網(wǎng)絡(luò)編程也稱套接字編程

網(wǎng)絡(luò)上具有唯一標(biāo)識的IP地址和端口號組合在一起才能構(gòu)成唯一能識別的標(biāo)識符套接字。

Socket原理機(jī)制:
通信的兩端都有Socket。
網(wǎng)絡(luò)通信其實(shí)就是Socket間的通信。
數(shù)據(jù)在兩個Socket間通過IO傳輸。

5、InetAddress

為了方便我們對IP地址的獲取和操作,java提供了一個類InetAddress 供我們使用,此類表示互聯(lián)網(wǎng)協(xié)議 (IP) 地址。InetAddress(Inet4Address、Inet6Address)

static InetAddress getLocalHost() 返回本地主機(jī)的地址。 String getHostAddress() 返回文本表示中的IP地址字符串。 static InetAddress getByAddress(byte[] addr) 返回給定的原始IP地址 InetAddress對象。 byte[] getAddress() 返回該對象的 InetAddress原IP地址。  InetAddress in = getByName();//根據(jù)主機(jī)名或IP參數(shù)  InetAddress返回對象String ip = in.getHostAddress();//獲取IPString hn = in.getHostName();//獲取主機(jī)名InetAddress lh = InetAddress.getLocalHost();//String getHostAddress() 返回文本表示中的IP地址字符串。 

6、UDP協(xié)議接收數(shù)據(jù)

public class lx1  {    public static void main(String[] args) throws Exception{        DatagramSocket fuwuduan = new DatagramSocket(6666);        DatagramPacket kongbao = new DatagramPacket(new byte[1024], 1024);        fuwuduan.receive(kongbao);        byte[] shuju = kongbao.getData();        int len =kongbao.getLength();        String fasongdizhi = kongbao.getAddress().getHostAddress();        System.out.println(fasongdizhi "客戶端:" new String(shuju,0,len));        fuwuduan.close();    }}public class lx2 {    public static void main(String[] args) throws IOException {        DatagramSocket kehuduan = new DatagramSocket();        Scanner sc = new Scanner(System.in);        System.out.println("聊天內(nèi)容:");        String talk = sc.nextLine();        byte[] bytes = talk.getBytes();        InetAddress lh = Inet4Address.getLocalHost();        String kehuduanAddress = lh.getHostAddress();        DatagramPacket shujubao = new DatagramPacket(bytes,bytes.length,lh,6666);        kehuduan.send(shujubao);        kehuduan.close();    }}

7、TCP協(xié)議接收數(shù)據(jù)

java針對TCP協(xié)議提供了兩個Socket類		1.客戶端 Socket  java.net.Socket包下	Socket(InetAddress address,int port);//服務(wù)器ip,服務(wù)端端口	Socket(String host,int port);//服務(wù)端ip字符串,服務(wù)端端口	Socket s = Socket("192.168.11.123",6666);		//發(fā)送數(shù)據(jù) 獲取通道中的流	OutputStream out = s.getOutputStream();	out.write("服務(wù)端,我來了".getBytes());	s.close();	2.服務(wù)端 ServerSocket	ServerSocket ss = new ServerSocket(6666);	Socket sk = ss.accept();//阻塞時方法 阻塞此處 等待客戶端連接 連接上以后才會執(zhí)行下面代碼 一旦連接就返回該套接字	InputStream in = sk.getInputStream();	byte[] bytes = new byte[1024];	int len = in.read(bytes);//阻塞方法,未收到發(fā)過來的消息是不會往下走 報(bào)錯 	String s = new String(bytes);	System.out.println(s);	ss.close();1.自定義結(jié)束標(biāo)記2:使用shutdownInput,shutdownOutput方法。//客戶端上傳文件結(jié)束后 直接結(jié)束流對象// public void shutdownOutput()//sk.shutdownOutput() ;
來源:https://www.icode9.com/content-1-386601.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一文學(xué)會Java之網(wǎng)絡(luò)編程
【從零開始學(xué)Java筆記】網(wǎng)絡(luò)編程
探索Java中的網(wǎng)絡(luò)編程技術(shù)
第二十六天 網(wǎng)絡(luò)編程【悟空教程】
玩轉(zhuǎn)Socket,你還是要懂這些概念
Java網(wǎng)絡(luò)編程TCP通信
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服