Java中使用Socket實現服務器端和客戶端通訊


創建服務器端serverSocket

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStream;
 4 import java.io.InputStreamReader;
 5 import java.io.OutputStream;
 6 import java.io.PrintWriter;
 7 import java.net.ServerSocket;
 8 import java.net.Socket;
 9 
10 /**
11  * 服務端
12  * @author Administrator
13  *
14  */
15 public class Server {
16 
17     public static void main(String[] args) throws IOException {
18         //創建一個服務器端socket,指定綁定的端口號,並監聽此端口
19         ServerSocket serverSocket = new ServerSocket(8888);
20         //調用accept()方法開始監聽,等待客戶端的連接
21         System.out.println("**********服務器即將啟動,等待客戶端的連接*************");
22         Socket socket = serverSocket.accept();
23         //獲取輸入流,並讀取客戶端信息
24         InputStream inp = socket.getInputStream();
25         //把字節流轉換成字符流
26         InputStreamReader isr = new InputStreamReader(inp);
27         //為字符流增加緩沖區
28         BufferedReader bfr = new BufferedReader(isr);
29         String info = null;
30         while((info=bfr.readLine())!=null){//循環讀取數據
31             System.out.println("我是服務器,客戶端說:"+info);
32         }
33         socket.shutdownInput();//關閉輸入流
34         //向客戶端傳遞的信息
35         OutputStream ots = socket.getOutputStream();
36         PrintWriter pw = new PrintWriter(ots);
37         pw.write("歡迎登陸");
38         pw.flush();
39         
40         //關閉資源
41         pw.close();
42         ots.close();
43         bfr.close();
44         isr.close();
45         inp.close();
46         socket.close();
47         serverSocket.close();
48         
49     }
50     
51 }

創建客戶端socket

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStream;
 4 import java.io.InputStreamReader;
 5 import java.io.OutputStream;
 6 import java.io.PrintWriter;
 7 import java.net.Socket;
 8 import java.net.UnknownHostException;
 9 
10 /**
11  * 客戶端
12  * @author Administrator
13  *
14  */
15 public class Client {
16 
17     public static void main(String[] args) {
18         try {
19             //創建一個客戶端socket
20             Socket socket = new Socket("localhost",8888);
21             //向服務器端傳遞信息
22             OutputStream ots = socket.getOutputStream();
23             PrintWriter pw = new PrintWriter(ots);
24             pw.write("用戶名:admin;密碼:123");
25             pw.flush();
26             //關閉輸出流
27             socket.shutdownOutput();
28             //獲取服務器端傳遞的數據
29             InputStream is = socket.getInputStream();
30             InputStreamReader isr = new InputStreamReader(is);
31             BufferedReader br = new BufferedReader(isr);
32             String info = null;
33             while((info=br.readLine())!=null){
34                 System.out.println("我是客戶端,服務器說:"+info);
35             }
36             //關閉資源
37             br.close();
38             isr.close();
39             is.close();
40             pw.close();
41             ots.close();
42             socket.close();
43         } catch (UnknownHostException e) {
44             e.printStackTrace();
45         } catch (IOException e) {
46             e.printStackTrace();
47         }
48     }
49     
50 }

先啟動服務器端,再啟動客戶端

服務器端打印結果為

**********服務器即將啟動,等待客戶端的連接*************
我是服務器,客戶端說:用戶名:admin;密碼:123

客戶端打印結果

我是客戶端,服務器說:歡迎登陸

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM