標籤:
一、網路通訊基礎
網路中存在很多的通訊實體,每一個通訊實體都有一個標識符就是IP地址。
而現實中每一個網路實體可以和多個通訊程式同時進行網路通訊,這就需要使用連接埠號碼進行區分。
二、java中的基本網路支援
1、IP地址使用InetAddress類來表示。
擷取InetAddress執行個體的兩個方法為:
(1)getByName(String host) 根據主機擷取對應的InetAddress對象
(2)getByAddress(byte[] addr)根據IP地址擷取InetAddress對象
2、InetAddress提供了三個方法來擷取InetAddress執行個體對應的IP地址和主機名稱
(1)String getCanonicalHostName()擷取此IP地址的許可權定網域名稱
(2)String getHostAddress()擷取InetAddress執行個體對應的IP地址
(3)String getHostName()擷取此IP地址的主機名稱
此外InetAddress類使用getLocalHost()方法擷取本機IP地址對應的InetAddress執行個體,使用isReachable()方法測試是否可以到達該地址。
三、java實現簡單的TCP/IP通訊
伺服器端使用ServerSocket建立TCP伺服器,使用accept()進行監聽,如果接收到用戶端請求則返回一個與用戶端對應的Socket,否則處於等待狀態。
用戶端根據伺服器的IP,串連伺服器。
伺服器代碼:
import java.net.*;import java.io.*;/**手機端代碼手機端作為伺服器,擷取自己的ip地址,並顯示以供用戶端串連*/public class phone_Server{ public static void main(String[] args) throws IOException { //列印原生IP地址 InetAddress address=InetAddress.getLocalHost(); System.out.println("原生IP地址是"+address.getHostAddress()); // 建立一個ServerSocket,用於監聽用戶端Socket的串連請求 ServerSocket ss = new ServerSocket(30000); // 採用迴圈不斷接受來自用戶端的請求 while (true) { // 每當接受到用戶端Socket的請求,伺服器端也對應產生一個Socket Socket s = ss.accept(); // 將Socket對應的輸出資料流封裝成PrintStream PrintStream ps = new PrintStream(s.getOutputStream()); // 進行普通IO操作 ps.println("您好,您收到了伺服器的新年祝福!"); // 關閉輸出資料流,關閉Socket ps.close(); s.close(); } }}
用戶端代碼:
/**PC端代碼PC作為用戶端,根據伺服器的IP地址和連接埠號碼串連伺服器*/import java.net.*;import java.io.*;public class PC_Client{ public static void main(String[] args) throws IOException { //Socket socket = new Socket("127.0.0.1" , 30000); Socket socket = new Socket("192.168.47.1" , 30000);//這裡的IP地址填寫手機端伺服器的IP地址 // 將Socket對應的輸入資料流封裝成BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 進行普通IO操作 String line = br.readLine(); System.out.println("來自伺服器的資料:" + line); // 關閉輸入資料流、socket br.close(); socket.close(); }}
java實現最基礎的socket網路通訊