【游戏服务端开服 一 】 单线程可以处理一对一的请求

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

 

posted @ 2016-03-30 19:56  嘎空间  阅读(337)  评论(0编辑  收藏  举报