<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    1.服務器
    package sterning;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;

    public class MultiThreadServer
    {
        
    private int port = 8821;
        
        
    private ServerSocket serverSocket;
        
        
    private ExecutorService executorService;// 線程池
        
        
    private final int POOL_SIZE = 10;// 單個CPU線程池大小
        
        
    public MultiThreadServer() throws IOException
        
    {
            serverSocket 
    = new ServerSocket(port);
            
    // Runtime的availableProcessor()方法返回當前系統的CPU數目.
            executorService = Executors.newFixedThreadPool(Runtime.getRuntime()
                    .availableProcessors()
                    
    * POOL_SIZE);
            System.out.println(
    "服務器啟動");
        }

        
        
    public void service()
        
    {
            
    while (true)
            
    {
                Socket socket 
    = null;
                
    try
                
    {
                    
    // 接收客戶連接,只要客戶進行了連接,就會觸發accept();從而建立連接
                    socket = serverSocket.accept();
                    executorService.execute(
    new Handler(socket));
                    
                }

                
    catch (Exception e)
                
    {
                    e.printStackTrace();
                }

            }

        }

        
        
    public static void main(String[] args) throws IOException
        
    {
            
    new MultiThreadServer().service();
        }

        
    }


    class Handler implements Runnable
    {
        
    private Socket socket;
        
        
    public Handler(Socket socket)
        
    {
            
    this.socket = socket;
        }

        
        
    private PrintWriter getWriter(Socket socket) throws IOException
        
    {
            OutputStream socketOut 
    = socket.getOutputStream();
            
    return new PrintWriter(socketOut, true);
        }

        
        
    private BufferedReader getReader(Socket socket) throws IOException
        
    {
            InputStream socketIn 
    = socket.getInputStream();
            
    return new BufferedReader(new InputStreamReader(socketIn));
        }

        
        
    public String echo(String msg)
        
    {
            
    return "echo:" + msg;
        }

        
        
    public void run()
        
    {
            
    try
            
    {
                System.out.println(
    "New connection accepted "
                        
    + socket.getInetAddress() + ":" + socket.getPort());
                BufferedReader br 
    = getReader(socket);
                PrintWriter pw 
    = getWriter(socket);
                String msg 
    = null;
                
    while ((msg = br.readLine()) != null)
                
    {
                    System.out.println(msg);
                    pw.println(echo(
    "國際化"));
                    
    if (msg.equals("bye"))
                        
    break;
                }

            }

            
    catch (IOException e)
            
    {
                e.printStackTrace();
            }

            
    finally
            
    {
                
    try
                
    {
                    
    if (socket != null)
                        socket.close();
                }

                
    catch (IOException e)
                
    {
                    e.printStackTrace();
                }

            }

        }

    }


    2.服務器處理程序
    package sterning;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;

    public class MultiThreadClient
    {
        
        
    public static void main(String[] args)
        
    {
            
    int numTasks = 10;
            
            ExecutorService exec 
    = Executors.newCachedThreadPool();
            
            
    for (int i = 0; i < numTasks; i++)
            
    {
                exec.execute(createTask(i));
            }

            
        }

        
        
    // 定義一個簡單的任務
        private static Runnable createTask(final int taskID)
        
    {
            
    return new Runnable()
                
    {
                    
    private Socket socket = null;
                    
                    
    private int port = 8821;
                    
                    
    public void run()
                    
    {
                        System.out.println(
    "Task " + taskID + ":start");
                        
    try
                        
    {
                            socket 
    = new Socket("localhost", port);
                            
    // 發送關閉命令
                            OutputStream socketOut = socket.getOutputStream();
                            socketOut.write(
    "shutdown\r\n".getBytes());
                            
                            
    // 接收服務器的反饋
                            BufferedReader br = new BufferedReader(
                                    
    new InputStreamReader(socket.getInputStream()));
                            String msg 
    = null;
                            
    while ((msg = br.readLine()) != null)
                                System.out.println(msg);
                        }

                        
    catch (IOException e)
                        
    {
                            e.printStackTrace();
                        }

                    }

                    
                }
    ;
        }

    }


    posted on 2011-08-26 10:28 HUIKK 閱讀(416) 評論(0)  編輯  收藏 所屬分類: Javajava Net
    主站蜘蛛池模板: 成人午夜免费福利| 真实国产乱子伦精品免费| 国产网站在线免费观看| 亚洲综合av一区二区三区不卡| 91香焦国产线观看看免费| 亚洲黄色中文字幕| 国产成人精品免费视频大| 亚洲国产日韩在线人成下载| 在线看免费观看AV深夜影院| 2020天堂在线亚洲精品专区| 思思99re66在线精品免费观看| 蜜臀亚洲AV无码精品国产午夜.| 国产成人免费ā片在线观看| 全部在线播放免费毛片| 中文字幕中韩乱码亚洲大片| 久久久久久久久久国产精品免费| 亚洲欧洲在线播放| 啦啦啦在线免费视频| 一级做a爰片久久毛片免费陪 | 亚洲国产精品成人精品小说| 一个人免费高清在线观看| 亚洲aⅴ无码专区在线观看春色 | 一个人免费观看视频在线中文| 亚洲中文字幕无码久久2017| 99视频免费播放| 亚洲色欲啪啪久久WWW综合网| 亚洲A∨午夜成人片精品网站| 波多野结衣免费一区视频 | 色费女人18女人毛片免费视频| 亚洲无码黄色网址| 亚洲一区免费视频| 国产偷国产偷亚洲高清在线| 亚洲中文字幕无码爆乳AV| 99视频全部免费精品全部四虎| 精品国产亚洲AV麻豆| 久久91亚洲精品中文字幕| 国内一级一级毛片a免费| 中文字幕乱码免费看电影| 国产精品高清视亚洲一区二区| 亚洲性日韩精品国产一区二区| 国产大片免费网站不卡美女|