1. 程式人生 > >Java------- 網路程式設計

Java------- 網路程式設計

   java 網路程式設計

網路:使用光纖,網線,Wifi等傳輸介質,將位於不同的地址的計算機連線到一起   1、區域網  2、廣域網(網際網路)3、都會網路

地址:計算機在網路上,什麼東西是它的地址? IP地址, IP地址就是計算機在網路上的唯一絕對地址 ,相當於人居住的房子的地址.

計算機上面可以安裝非常多的應用軟體,那麼如何區分這些軟體?需要通過埠號來區分,埠號,相當與房子中開的們.

一、埠號在計算機裡面有2個位元組那麼大,因此埠號的取值範圍:0--65535  共65536個 但是1024以下的埠號,通常是計算機內建軟體埠 類似於現實生活中的短號號碼 120 110 119 ...

二、1024以上的我們都可以用,並且為了避免重複性,推薦大家埠號定義越大越好.

三、多個軟體之間,如果使用同一種通訊協議,那麼軟體之間,埠號不允許重複.  但是不同協議,埠可以重複.

四、資源定位 URL:統一資源定位符 http://127.0.0.1:80/stusystem/user/1   URI:統一資源修飾符.  user/1

五、資料的傳輸

   1、計算機之間底層通過傳輸010101010100110010010這樣的資料進行通訊,但是通訊時,如果識別有效資料,還是需要不同的協議才能完成,不然就會造成:雞同鴨將的效果.    協議中,場景的底層協議:TCP/UDP    TCP/IP:非常類似於打電話,它是一種面向連線的協議. 他的特點:安全可靠但是效率相對UDP而言,較為低下    ---請求響應模式    UDP:類似於發簡訊,類似於廣播,它是一種非面向連線的協議. 他的特點:不可靠,安全性較低, 但是它的效率較高.

   2、資料在進行傳輸時,需要經過一系列的封裝和拆分的過程.      1)、資料的封裝.      2)、資料的拆分.      採用了分層的思想,來完成對層次的解耦,以及各層的職責分離,讓各層能夠合理分工合作.   --OSI七層模型.

六、 客戶端和伺服器     C/S  Client/Server  (胖客戶端) 特點:需要安裝 需要更新.     B/S  Browser/Server (瘦客戶端) 特點:不需要安裝,更不需要更新,伺服器更新之後,開啟瀏覽器,自動更新.

七、傳輸層的傳輸方式     需要解決到達計算機的OSI七層模型中的010101010100100這種二進位制資料,如何才能到達我們的應用軟體.     傳輸層的作用:就是建立一個數據傳輸通道,將來自於OSI七層模式中下三層的資料傳輸到我們應用程式中.     這個資料傳輸通道,我們把它稱之為Socket接字,實際上,就類似於我們現實生活中的飛機場、食品廠、物流中的"傳輸履帶",只不過他的特點是:可以雙向傳輸.     作為傳輸層來講,只有2種傳輸協議,TCP/IP(三次握手四次揮手),UDP.     TCP/IP:建立連線三次握手-----關閉連線四次揮手.

java.net: ServerSocket   Socket    DatagramSocket  DatagramPacket  InetAddress  URL  URLConnection(HttpURLConnection)  URLEncoder   URLDecoder  

    getByName(String host):根據主機獲取對應的InetAddress物件。該方法是靜態方法。

    getByAddress(byte[] address):根據原始IP地址獲取對應的InetAddress物件。該方法是靜態方法。

    String getCanonicalHostName():獲取此IP地址的全限定域名。

    String getHostAddress():返回此IP地址對應的IP地址字串。

    String getHostName():返回此IP地址對應的主機名。

    String getLocalHost():獲取本地IP地址對應的InetAddress物件。

           //獲取本機的InetAddress物件
            InetAddress addr = InetAddress.getLocalHost();
            //獲取本機的IP地址
            System.out.println(addr.getHostAddress());        
            //獲取本機的主機名
            System.out.println(addr.getHostName());    
            
            //-------------------------------------
            // 獲得其他機器的InetAddress物件(根據IP地址)
            //-------------------------------------
            addr = InetAddress.getByName("192.168.1.122");
            //獲取機器的IP地址
            System.out.println(addr.getHostAddress());        
            //獲取機器的主機名
            System.out.println(addr.getHostName());    //此時輸出的IP地址,不是域名,也不是計算機的名稱,
            //如果我在getByName()這個方法中,輸入的IP地址不存在或者是機器本身的DNS不允許進行IP地址與域名|(IP地址與機                器名) 之間的對映,
            //那麼.getHostName()這個方法直接返回的IP地址
            
            
            //-------------------------------------
            // 獲得其他機器的InetAddress物件(根據域名)
            //-------------------------------------
            addr = InetAddress.getByName("www.baidu.com");
            //獲取機器的IP地址
            System.out.println(addr.getHostAddress());        
            //獲取機器的主機名
            System.out.println(addr.getHostName());    //此時返回的就是域名 機器本身的DNS允許進行IP地址與域名
            
            
            //-------------------------------------
            // 獲得其他機器的InetAddress物件(根據主機名)
            //-------------------------------------
            addr = InetAddress.getByName("IXEZUAQCXJ8BTAO");
            //獲取機器的IP地址
            System.out.println(addr.getHostAddress());        
            //獲取機器的主機名
            System.out.println(addr.getHostName());