歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java編程高級之Java網絡編程知識基礎

Java編程高級之Java網絡編程知識基礎

日期:2017/3/1 10:10:11   编辑:Linux編程

Java是一種平台無關的編程語言,具有“一次編寫、到處運行”的特點,所以非常適合網絡編程。可以這樣說,在網絡編程方面沒有任何一門語言比Java更優秀。

要學習Java網絡編程,就必須要對相關的網絡知識有一定的了解,下面對於網絡的一些基礎知識進行簡單的敘述。

網絡基本概念

計算機網絡:

計算機網絡,就是把分布在不同地理區域的計算機與專門的外部設備用通信線路互連成一個規模大、功能強的網絡系統,從而使眾多的計算機可以方便地互相傳遞信息,共享硬件、軟件、數據信息等資源。

網絡體系結構:

國際標准化組織ISO於l978年提出“開放系統互連參考模型”,即著名的OSI(Open System Interconnection)模型。該模型把計算機網絡分成物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層等七層。

通信協議


計算機網絡中實現通信必須有一些約定,即通信協議。對速率、傳輸代碼、代碼結構、傳輸控制步驟、出錯控制等制定出的標准。

包括:TCP協議和IP協議

TCP協議:提供可靠的數據傳輸服務的規則。

IP協議:進行IP數據包的分割和組裝。

但是通過IP協議並不能清楚地了解到數據包是否順利地發送給目標計算機。而使用TCP協議,它將數據包成功發送給目標計算機後,會要求發送一個確認,如果在某個時間內沒有收到確認,TCP將重新發送數據包。因此,較IP協議而言,TCP協議的安全性、准確性更高些。

IP地址和端口號

IP地址:

為實現網絡中不同的計算機之間的通信,在網絡中的每台機器都必須有一個與眾不同的標識,這就是IP地址(IP Address)。

  1. 格式:數字型、32位、由4段8位的二進制數組成。一般表示為十進制形式(4個0~255的十進制整數),中間用圓點隔開,如:166.111.78.98。
  2. 域名地址:也是分段表示的,便於記憶的、字符串形式。

端口:

一個16位的整數,用於表示數據交給哪個通信程序處理。因此,端口就是應用程序與外界交流的出入口,它是一種抽象的軟件結構,包括一些數據結構

和I/O(基本輸入/輸出)緩沖區。

不同的應用程序處理不同端口上的數據,同一台機器上不能有兩個程序使用同一個端口,端口號可以從0到65535,通常將它分為三類:

  1. 公認端口(Well Known Ports):從0到1023,它們緊密綁定(Binding)一些服務。
  2. 注冊端口(Registered Ports):從1024到49151。它們松散地綁定一些服務。
  3. 動態和/或私有端口(Dynamicand/or Private Ports):從49152到65535,這些端口是應用程序使用的動態端口,應用程序一般不會主動使用這些端口。

Java的基本網絡應用

在JDK中為開發網絡應用程序提供了java.net包,該包下的類和接口幾乎都是為網絡編程服務的。

InetAddress:用於描述IP地址的對象

InetAddress類沒有提供構造方法,而是提供了兩個靜態方法來獲取InetAddress實例
getByName(String host):根據主機獲取對應的InetAddress對象。
getByAddress(byte[] addr):根據原始IP地址來獲取對應的InetAddress對象。

關於InetAddress類的應用:

package net.csdn.inet;

import java.net.InetAddress;

import java.net.UnknownHostException;

public class TestInet {

/**

* @param args

*/

publicstatic void main(String[] args) {

Stringadd ="192.168.49.222";

try {

//根據主機獲取對應的InetAddress對象。

InetAddressinet = InetAddress.getByName(add);

System.out.print("主機的ip地址\t"+inet.getHostAddress()+"\t主機的名稱\t"+inet.getHostName());

}catch (UnknownHostException e) {

//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

這些基礎的網絡知識比較簡單,但是我們還是要對它有一定的了解的,這對於我們以後深入的學習Java網絡編程,是很有幫助的。

Copyright © Linux教程網 All Rights Reserved