团队项目

Posted 鸡仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了团队项目相关的知识,希望对你有一定的参考价值。

  最近实现了团队项目局域网聊天室的服务器端的框架,目前可以接收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通信。具体功能会在之后的开发中完善。

以上是关于团队项目的主要内容,如果未能解决你的问题,请参考以下文章

TSINGSEE青犀视频通道FFmpeg获取视频片段的方法介绍

GitLab安装与汉化-实战

CentOS 7.6 搭建Gitlab教程

GitLab版本管理(转)

版本管理 GitLab 的安装及管理 (CentOS 7)

GitLab安装部署