第十四章 網絡編程

C/S
S就是服務器,C是客戶端,客戶端要與服務器端進行交互必須藉助於網絡,在JAVA中網絡的通信不光可以在C/S中實現也可以B/S中實現。

(瞭解)
TCP/IP協議
    TCP/IP(Transmission Control Protocol / Internet Protocol) 傳輸控制/網際協議,又稱網絡通信協議,TCP、IP協議時網絡通信中最基本的協議
IP
    計算機在網絡的唯一標識,是計算機的數字標識
域名
    計算機的字符化標識,域名不能被網絡設別識別,必須藉助DNS進行解析才能獲取
端口
    計算機與外界通訊的接口,其範圍是0~65535,1024以外端口爲系統所佔用



P2P:Point to Point ,網絡中兩臺計算機進行互相訪問,在這過程中,兩臺計算機既擔負着服務器的角色提供信息,又擔負着客戶端的角色獲取信息。
        要實現P2P必須先通過IP定位知道對方在網絡中的位置


InetAddress
    該類表示IP地址對象,可以通過InetAddress可以獲取計算機的IP,主機名等計算機身份信息

通過主機名或域名獲取IP地址
  1. 創建IP地址對象根據域名創建
  2. InetAddress address = InetAddress.getByName("www.qq.com");
  3. 打印顯示該地址中的IP
  4. System.out.println(address.getHostAddress());
通過IP地址或域名獲取主機名
  1. //根據IP地址創建
  2. InetAddress address = InetAddress.getByName("192.168.9.100");
  3. //獲取主機名稱
  4. System.out.println(address.getHostName());

Socket對象
    Socket又稱套接字,是TCP/IP協議中的基本概念,Socket是兩個程序進行通訊的端點,其功能是負責將信息先寫入Socket,再將TCP/IP包信息發送到網絡中另一個Socket端,Sockte可以在同一臺電腦中,也可以網絡中的遠程計算機上。

ServerSocket服務端
    ServerSocket是建立在服務器端的套接字,負責開放端口並監測連入的客戶端套接字。
     服務器端的監聽
               Socket socket = server.accept();
    服務器端以阻塞的方式監聽連入的客戶端,獲取客戶端套接字對象
  1. //創建服務端的sockect對象,該對象打開了9090端口
  2. System.out.println("服務器開啓了9090端口");
  3. ServerSocket server = new ServerSocket(9090);
  4. //開啓服務端的socket,並通過線程阻塞的方式負責監聽連入該服務端客戶端socket
  5. //返回值表示連入服務器的客戶端對象
  6. System.out.println("服務器運行中,正在等待客戶端等的連接…………");
  7. Socket client = server.accept();
  8. System.out.println(client.getInetAddress().getHostAddress()+"已經連入服務器");


Socket客戶端
    Socket是客戶端的訪問接口,用於對服務器端的訪問,負責將信息寫入併發送給服務器端。
  1. System.out.println("客戶端正在連接服務器.......");
  2. Socket client = new Socket("192.168.9.100", 9090);
  3. System.out.println("服務器連接成功");
  4. //創建字符流用來接收鍵盤的輸入
  5. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

Socket具備兩個字節流獲取的方法
       getInputStream()
       getOutputStream()
  1. //獲取客戶端的輸入流,讀取客戶端發送的信息
  2. InputStream is = client.getInputStream();
  1. //獲取客戶端等的輸出流,用來將數據寫給服務器
  2. OutputStream os = client.getOutputStream();

  1. //客戶端的輸出流
  2. private BufferedWriter writer;
  3. //客戶端的輸入流
  4. private BufferedReader reader;
  5. //獲取輸出流
  6. writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
  7. //獲取輸入流
  8. reader = new BufferedReader(new InputStreamReader(client.getInputStream()));


1對1的數據傳輸
    建立服務器端打開開放端口並監聽客戶端
    建立客戶端連接服務器,寫入數據並通過輸出流傳遞給服務器端

1對多傳輸
       建立服務器並打開端口並監聽連入的客戶端
       通過多線程管理多個連入的客戶端,每個客戶端分別開闢線程管理
       建立客戶端
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章