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());