<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JAVA基礎-網(wǎng)絡編程

          共 2118字,需瀏覽 5分鐘

           ·

          2020-09-04 13:18

          來源:SegmentFault 思否社區(qū)
          作者:chain_xx_wdm




          網(wǎng)絡編程的常識


          七層網(wǎng)絡模型


          • OSI(Open System Interconnect),即開放式系統(tǒng)互聯(lián), 是ISO組織在1985年研究的網(wǎng)絡互連模型
          • OSI七層模型和TCP/IP五層模型的劃分如下:
          • 當發(fā)送數(shù)據(jù)時,需要對發(fā)送的內(nèi)容按照上述七層模型進行層層加包后發(fā)送出去
          • 當接收數(shù)據(jù)時,需要對接收的內(nèi)容按照上述七層模型相反的次序層層拆包并顯示出來




          相關的協(xié)議


          協(xié)議的概念


          計算機在網(wǎng)絡中實現(xiàn)通信就必須有一些約定或規(guī)則,這種約定和規(guī)則就叫做通信協(xié)議.


          通信協(xié)議可以對速率, 傳輸代碼, 代碼結構, 傳輸控制步驟, 出錯控制等制定統(tǒng)一的標準


          TCP協(xié)議


          傳輸控制協(xié)議(Transmission Control Protocol), 是一種面向連接的協(xié)議,類似于打電話


          • 建立連接 => 進行通信 => 斷開連接
          • 在傳輸前采用"三次握手"方式
          • 在通信的整修過程中全程保持連接,形成數(shù)據(jù)傳輸通道
          • 保證了數(shù)據(jù)傳輸?shù)目煽啃院陀行蛐?/span>
          • 是一種全雙工的字節(jié)流通信方式,可以進行大數(shù)據(jù)量的傳輸
          • 傳輸完畢后需要釋放已建立的連接, 發(fā)送數(shù)據(jù)的效率比較低


          UDP協(xié)議


          用戶數(shù)據(jù)報協(xié)議(User Datagram Protocool),是一種非面向連接的協(xié)議,類似于定信

          • 在通信的整修過程中不需要保持連接, 其實是不需要建立連接
          • 不保證數(shù)據(jù)傳輸?shù)目煽啃院陀行蛐?/span>
          • 是一種全雙工的數(shù)據(jù)報通信方式, 每個數(shù)據(jù)報的大小限制在64k以內(nèi)
          • 發(fā)送數(shù)據(jù)完畢后無需釋放資源,開銷小,發(fā)送數(shù)據(jù)的效率比較高,速度快


          IP地址


          • 192.168.1.1 絕大多數(shù)路由器的登錄地址,主要配置用戶名和密碼以及Mac過濾
          • IP地址是互聯(lián)網(wǎng)中的唯一地址標識,本質(zhì)上是由32位二進制組成的整數(shù),叫做IPv4,當然也有128位二進制組成的整數(shù),叫做IPv6,目前主流的還是IPv4
          • 日常生活中采用點分十進制表示法來進行IP地址的描述,將每個字節(jié)的二進制轉化為一個十進制整數(shù),不同的整數(shù)之間采用小數(shù)點隔開
          • 特殊的地址: 本機回環(huán)地址:127.0.0.1;主機名:localhost


          端口號


          • IP地址 - 可以定位到具體某一臺設備。
          • 端口號 - 可以定位到該設備中具體某一個進程。
          • 端口號本質(zhì)上是16位二進制組成的整數(shù),表示范圍是:0 ~ 65535,其中0 ~ 1024之間的端口號通


          常被系統(tǒng)占用,建議編程從1025開始使用。

          • 特殊的端口:
            HTTP:80?FTP:21 Oracle:1521 MySQL:3306 Tomcat:8080
          • 網(wǎng)絡編程需要提供:IP地址 + 端口號,組合在一起叫做網(wǎng)絡套接字:Socket。




          基于tcp協(xié)議的編程模型


          C/S架構的簡介


          • 在C/S模式下客戶向服務器發(fā)出服務請求,服務器接收請求后提供服務。
          • 例如:在一個酒店中,顧客找服務員點菜,服務員把點菜單通知廚師,廚師按點菜單做好菜后讓服


          務員端給客戶,這就是一種C/S工作方式。如果把酒店看作一個系統(tǒng),服務員就是客戶端,廚師就是服務器。這種系統(tǒng)分工和協(xié)同工作的方式就是C/S的工作方式。


          • 客戶端部分:為每個用戶所專有的,負責執(zhí)行前臺功能。
          • 服務器部分:由多個用戶共享的信息與功能,招待后臺服務。


          編程模型


          • 服務器
            1. 創(chuàng)建SeverSocket類型的對象并提供端口號
            2. 等待客戶端的連接請求,調(diào)用accept()方法
            3. 使用輸入輸出流進行通信
            4. 關閉Socket
          • 客戶端
            1. 創(chuàng)建Socket類型的對象并提供服務器的IP地址和端口號
            2. 使用輸入輸出流進行通信
            3. 關閉Socket


          相關類和方法的解析


          ServerSocket類


          • java.net.ServerSocket類主要用于描述服務器套接字信息
          • 常用的方法如下

          Socket類


          • java.net.Socket類主要用于描述客戶端套接字,是兩臺機器間通信的端點
            常用的方法如下



          注意事項


          • 客戶端Socket與服務器端Socket對應,都包含輸入和輸出流
          • 客戶端的socket.getInputStream()連接于服務器的socket.getOutputStream()
          • 客戶端的socket.getOutputStream()連接于服務器的socket.getInputStream()





          基于udp協(xié)議的編程模型


          編程模型


          • 接收方:
            (1)創(chuàng)建DatagramSocket類型的對象并提供端口號;
            (2)創(chuàng)建DatagramPacket類型的對象并提供緩沖區(qū);
            (3)通過Socket接收數(shù)據(jù)內(nèi)容存放到Packet中,調(diào)用receive方法;
            (4)關閉Socket;
          • 發(fā)送方:
            (1)創(chuàng)建DatagramSocket類型的對象;
            (2)創(chuàng)建DatagramPacket類型的對象并提供接收方的通信地址;
            (3)通過Socket將Packet中的數(shù)據(jù)內(nèi)容發(fā)送出去,調(diào)用send方法;
            (4)關閉Socket;





          點擊左下角閱讀原文,到?SegmentFault 思否社區(qū)?和文章作者展開更多互動和交流。

          -?END -

          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一级欧美一级黄色大片 | 亚洲免费在线看 | 热热色热热色 | 欧美日韩一级黄色片 | 亚洲天堂综合网 |