Java中利用socket实现简单的服务端与客户端的通信(入门级)
Java編程中,要想要使用網絡通信,就離不開Socket編程,在此對socket進行簡單的介紹。首先聲明,這是一個入門級的介紹,僅僅簡單的實現了客戶端向服務端發送數據,服務端正常的接收數據,當接收到特定的數據時,服務端和客戶端都關閉,一個服務端對應一個客戶端,不涉及多線程等內容,一切都是最簡單最基礎的知識點。
下面給出的代碼,可以直接拷貝到eclipse中運行, 無需任何更改。
關于socket和seversocket的原理以及構造函數等一些簡單的介紹,可以查看其他的一些博客,期中寫的比較清晰,我給大家推薦一個[Java]Socket和ServerSocket學習筆記?。期中關于socket的通信原理和需要基本了解的一些構造函數,常用函數等,都進行了簡單的介紹。
開發環境為eclipse,新建兩個普通的Java工程,一個命名為server_1,作為服務端,另一個命名為client_1,作為客戶端,完成的功能就是在客戶端的控制臺輸入內容后,客戶端將內容發送至服務端,在服務端的控制臺可以看到輸入的內容,當輸入的內容為shutdown時,服務端和客戶端都關閉通信,通信結束。
服務端代碼:
package server_1;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class server_1 { public static void main(String[] args) throws IOException { //將異常全部拋出 ServerSocket server = new ServerSocket(10000); //用serversocket來啟動服務器,并指定端口號System.out.println("服務器啟動。。。");Socket socket = server.accept(); //獲取客戶端的socket信息BufferedReader in = null; in = new BufferedReader(new InputStreamReader(socket.getInputStream())); //啟動緩沖區 while (true) { String msg = in.readLine(); // 將客戶端發送來的信息存儲在msg中 System.out.println(msg); if (msg.equals("shutdown")) { //客戶端如果發送的是shutdown,就關閉客戶端break; } }in.close(); //執行相應的關閉操作 } }考慮這是一個入門級的程序,所以暫時不考慮各種異常情況,咋mian函數的后面就講各種異常拋出。建立seversocket,并且指定服務器的端口號為10000,此時服務器端開始運行。(端口號盡量取大于1024的數字,小于1024的一般都是系統程序占用)
然后利用socket實現和客戶端的連接。
in是一個輸入緩沖區,客戶端發送來的信息就暫時存儲在這個緩沖區中。
然后用while語句,循環的監聽客戶端發送過來的數據,當是一般信息時,就講客戶端發來的內同打印到控制臺,如果是“shutdown”,則關閉服務器端,此次通信終止。
客戶端程序:
package client_1;import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket;public class client_1 { public static void main(String[] args) throws Exception { System.out.println("客戶端啟動");Socket socket = new Socket("localhost", 10000); //啟動socket,并連接本地主機的相應端口號PrintWriter out = new PrintWriter(socket.getOutputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));//從控制臺獲取輸入的內容 //不斷的獲取輸入的內容,并不斷的發送給服務器,當輸入shutdown時,跳出循環,停止運行while (true) { String msg = reader.readLine(); out.println(msg); out.flush(); if (msg.equals("shutdown")) { break; } } //執行相應的關閉操作socket.close();out.close();reader.close();} }同樣也是在main函數后就拋出所有的異常,不考慮一些比較復雜的異常情況。
建立socket來準備進行通信,指定服務端的位置為“localhost”(也就是本機,也可以使用IP:127.0.0.1),端口號要和服務器端的端口號對應,為10000。
建立reader為緩沖區,將控制臺輸入的內容先存儲到緩沖區中。
建立out用來發送數據。
通過while循環監聽控制臺,通過socket將緩沖區的內容發送到服務端,如果輸入的是一般結果,則將內容發送給服務端,如果輸入的時“shutdown”,則將內容發送后跳出循環, 此次通信結束。
以上就是關于socket通信的一個非常簡答的例子。
總結
以上是生活随笔為你收集整理的Java中利用socket实现简单的服务端与客户端的通信(入门级)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git与github区别与简介
- 下一篇: Java中利用socket实现简单的服务