【遊戲服務端開服 一 】 單線程能夠處理一對一的請求

Java 學習多線程程序,通常要經歷的幾個階段 java

1.單線程能夠處理一對一的請求 多線程

 

 1 package rodking.server;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.io.PrintWriter;
 7 import java.net.ServerSocket;
 8 import java.net.Socket;
 9 
10 
11 /**
12  * @author rodking
13  * @des 單線程能夠處理一對一的請求,當若是有要處理多個客戶端鏈接時不適用
14  * (相似一種排隊機制)
15  * (問答模式,單通道通訊) 阻塞通訊
16  */
17 public class OneThreadServer {
18     private ServerSocket server;
19     private Socket socket = null;
20     
21     public void serverStart()
22     {
23         BufferedReader is = null;
24         PrintWriter os = null;
25         try {
26             // 啓動一個服務端
27             server = new ServerSocket(9000);
28             System.out.println("[ S ]: game server start port 9000.");
29             // 監聽一個客戶端鏈接
30             socket = server.accept();
31             String line;
32             // 獲取客戶端的,讀寫流
33             is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
34             os = new PrintWriter(socket.getOutputStream());
35             line = is.readLine();
36             
37             System.out.println("[ S ]: one client in server");
38             // 單線程處理讀取
39             while (!line.equals("bye")) {
40 
41                 System.out.println("Server:" + line);
42                 System.out.println("Client:" + line);
43                 
44                 // TODO 這裏能夠作協議派發 (封裝 os)
45                 os.println("[ received ] "+ line);
46                 os.flush();
47                 
48                 line = is.readLine();
49             }
50             
51             System.out.println("[ S ]: game server close.");
52             
53             os.close();
54             is.close();
55             socket.close();
56             server.close();
57 
58         } catch (IOException e) {
59             e.printStackTrace();
60         }
61     }
62 
63     public static void main(String[] args) {
64         OneThreadServer server = new OneThreadServer();
65         server.serverStart();
66     }
67 }
View Code
相關文章
相關標籤/搜索