Java是一種非常流行的編程語言,被廣泛用于開發(fā)各種應用程序。其中最為重要的一類應用程序就是基于客戶端/服務器(C/S)架構的應用,也稱為分布式應用。
在Java中,一個C/S架構的應用程序通常由兩部分組成,即服務器端和客戶端。服務器端主要負責提供服務,處理客戶端的請求,對數(shù)據(jù)進行處理和存儲等操作。而客戶端則負責向服務器端發(fā)送請求,接收服務器端返回的數(shù)據(jù),并將其顯示給用戶。
public class Server { public static void main(String[] args) { try { // 創(chuàng)建一個ServerSocket對象,此對象用于監(jiān)聽指定的端口號 ServerSocket server = new ServerSocket(8888); System.out.println("服務器已啟動,正在監(jiān)聽端口 8888..."); while (true) { // 等待客戶端的連接請求,并創(chuàng)建一個Socket對象 Socket socket = server.accept(); System.out.println("客戶端已連接!"); // 開啟一個新線程,將Socket對象傳遞過去 Thread thread = new ServerThread(socket); thread.start(); } } catch (IOException e) { e.printStackTrace(); } } } public class Client { public static void main(String[] args) { try { // 創(chuàng)建一個Socket對象,指定需要連接的服務器IP和端口號 Socket socket = new Socket("127.0.0.1", 8888); System.out.println("成功連接服務器!"); // 獲取輸出流,用于向服務器端發(fā)送數(shù)據(jù) OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello, Server!".getBytes()); // 獲取輸入流,用于從服務器端接收數(shù)據(jù) InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int length = inputStream.read(buffer); System.out.println("收到服務器端的消息:" + new String(buffer, 0, length)); // 關閉Socket對象和流對象 inputStream.close(); outputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
在以上代碼中,我們使用了Java中的ServerSocket類和Socket類來實現(xiàn)服務器和客戶端的通信。具體實現(xiàn)中,服務器通過ServerSocket對象監(jiān)聽指定的端口號,當收到客戶端的連接請求時,創(chuàng)建一個新的Socket對象,并將其傳遞給一個新線程進行處理。而客戶端則通過Socket對象連接到服務器,獲取輸入輸出流并進行消息交互。