码迷,mamicode.com
首页 > 其他好文 > 详细

团队项目(三)

时间:2016-06-21 01:13:35      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

  最近实现了团队项目局域网聊天室的服务器端的框架,目前可以接收socket请求并收发消息。

  由于聊天室服务器需要同时维持多个socket通信,所以服务器端代码采用了多线程技术,即每接收到一个socket请求后将创建一个新的线程进行后续操作,而主线程一直在等待请求并分发任务。实现了同时服务多个socket的功能。

  代码如下:

  主线程代码:

 1 public class Server {
 2 
 3     public static void main(String[] args) {
 4         // TODO Auto-generated method stub
 5         try {
 6             ServerSocket svr = new ServerSocket(5555);
 7             while (true) {
 8                 Socket s = svr.accept();
 9                 ServerThread ST = new ServerThread(s);
10                 ST.start();
11                 ChatManager.getChatManager().add(ST);
12             }
13         } catch (IOException e) {
14             // TODO Auto-generated catch block
15             e.printStackTrace();
16         }
17 
18     }
19 
20 }

  线程类:

public class ServerThread extends Thread {

    private Socket soc=null;
    public BufferedReader in=null;
    public BufferedWriter out=null;
    public ServerThread(Socket soc) {
        // TODO Auto-generated constructor stub
        this.soc = soc;
    }
    public void out(String msg){
        try {
            out.write(msg);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    @Override
    public void run() {

        InputStream is=null;
        OutputStream os=null;
        try {
            is=soc.getInputStream();
            os=soc.getOutputStream();
            in=new BufferedReader(new InputStreamReader(is));
            out=new BufferedWriter(new OutputStreamWriter(os));
            System.out.println(soc.getPort());
            ChatManager.getChatManager().threadsVector.add(this);
            out.write("欢迎");
            out.flush();
            while (true) {
                String str = in.readLine();
                ChatManager.getChatManager().pulish(this, str);
                System.out.println(str);
                //System.out.println(ChatManager.getChatManager().threadsVector.size());
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        super.run();
    }

}

  多线程服务器初步框架完成,目前测试可以同时服务、维持多个socket通信。具体功能会在之后的开发中完善。

团队项目(三)

标签:

原文地址:http://www.cnblogs.com/bjut13070017/p/5602220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!