關於java網絡編程socket的回顧

關於java網絡編程這塊,是每個入門的開發者在初學java的時候都會接觸的一個知識點,在此之前的要求就是必須得弄明白java繁多的各種IO流,所以在java網絡編程這一塊設計到大量的流操作,原因很簡單,因爲網絡編程所做的工作基本就是數據的交互,在數據的交互中就產生了大量的IO流的讀寫。

在此之前有必要過一下底層網絡的一些基礎知識,關於計算網絡體系結構與常規協議一圖概括:

在這裏插入圖片描述

目前對於常見的web開發者來說,主要的網絡編程作用在TCP/IP概念層模型的應用層,對於一些硬件或嵌入式,或Linux開發者來說,主要的網絡編程作用在傳輸層。

在網絡編程的世界,就是通過相關的技術和協議來規定數據在各層規定的模型傳輸,來到達數據的交互。如果需要精確的交互,還需要數據的傳輸具有目的性,而URL就是讓數據具有目的性的保證。

URL(Uniform Resource Locator):www的統一資源定位符。主要由4部分組成:協議 、存放資源的主機域名、資源文件名和端口號。如果未指定該端口號,則使用協議默認的端口。例如http 協議的默認端口爲 80。它的主要作用就是在www上,讓每一信息資源都有統一且唯一的地址。

(注:URI(統一資源標準符) = URL + URN(統一資源命名))

在java.net包中提供了URL類,該類封裝了大量複雜的涉及從遠程站點獲取信息的細節。

SOCKET: 我們開發的網絡應用程序位於應用層。對於java開發者來說,在應用層使用socket套件字進行網絡模塊功能的開發是最常見的。因爲socket是傳輸層供給應用層的編程接口。Socket就是應用層與傳輸層之間的橋樑。使用Socket編程可以開發客戶機和服務器應用程序,可以在網絡上進行通信。個人覺得重點還是提供了接口,使得我們不用關注底層的實現。(此接口在java.net.Socket包中)

//客戶端小demo
public class ClientSocket {
 public static void main(String args[]) {
    String host = "127.0.0.1"; //消息傳輸的目的地IP
    int port = 8919; ////消息傳輸的目的地端口
    try {
     Socket client = new Socket(host, port);
     Writer writer = new OutputStreamWriter(client.getOutputStream());
     writer.write("Hello From Client");
     writer.flush();
     writer.close();
     client.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
  }
  
}
//服務端小dome
public class ServerClient {
 public static void main(String[] args) {
    int port = 8919;//服務端監聽的端口,如果有數據過來就讀取
    try {
      ServerSocket server = new ServerSocket(port);
      Socket socket = server.accept(); //阻塞等待客戶端發來消息
      Reader reader = new InputStreamReader(socket.getInputStream());
      char chars[] = new char[1024];
      int len;
      StringBuilder builder = new StringBuilder();
      while ((len=reader.read(chars)) != -1) {
        builder.append(new String(chars, 0, len));
      }
      System.out.println("Receive from client message=: " + builder);
      reader.close();
      socket.close();
      server.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
 }
}

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