網絡編程(TCP)

                                                           基於TCP的網絡編程

     首先說一下InetAddress類,在java中使用InetAddress類來封裝IP地址和該地址的域名。InetAddress類內部隱藏了地址數字,他不需要用戶瞭解如何實現地址的細節。InetAddress類無構造方法,不能直接創建其對象,但可以通過該類的靜態方法創建一個InetAddress對象或數組。例如:InetAddress IPO=InetAddress.getLocalHost();,他的方法:

(沒寫的前面都是public static InetAddress)getLocalHost():獲得本機InetAddress對象; getByname(String host):獲得由host指定的InetAddress對象,host是計算機域名(或IP);getAllbyName(String host):獲得具有相同名字的一組InetAddress對象;

getByAddress(byte[] addr):獲取addr所封裝的IP地址對應的InetAddress對象。

public String getCanonialHostName():從域名服務中獲得標準的主機名;

public bytes[] getHostAddress():獲得主機IP地址。

public String getHostName():獲得主機名。

public String toString():獲得主機名和IP地址的字符串。

注意:在需要獲得Internet上的域名所對應的地址信息時,要保證運行環境能訪問Internet,否則將要拋出UNknownHostException異常。

     當然,網絡編程中還有URL類和URLConnection類。當得到一個URL對象後,可以通過URL的openStream()方法讀取指定的WWW資源。此方法與指定的URL建立連接並返回InputStream類的對象已從這一連接中讀取數據。

例如:URL bd=new URL("http://www.cuit.edu.cn/");

           BufferedReader br=new BufferedReader(new InputStreamReader(bd.openStream()));

           String line;

           while((line=br.readLine())!=null)

            System.out.println(line);

           br.close();

但是通過URL的openStream(),只能從網絡上讀取數據,如果需要輸出數據,此時就需要用到URLConnection類。他是一個抽象類,代表與URL指定的數據源的動態連接,它提供比URL類更強的服務器交互控制,其允許用POST或PUT和其他HTTP請求方法方法將數據送回服務器。URL類的方法openStream()是通過該類來實現的,等價於openConnection().getInputStream()。

       現在再來說基於TCP的網絡編程。先映入套接字(Socket)允許程序員將網絡連接當成一個流,可以向這個流中寫字節,也可以從這個流中讀取字節。java中有兩種TCP套接字:一種是服務器套接字(ServerSocket);另一種是客戶端套接字(Socket)。還是看一個例子,例子能讓人更懂.例子在附件中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章