zoukankan      html  css  js  c++  java
  • 实现项目框架

    项目名:基于linux下的高性能负载均衡聊天服务器。

            2018 年 1 月 15 日开始做这个项目,现在是1 月 27 号 已经把基础功能先大概实现了,由于是我的第一个项目,接下来会好好记录一下。后续会往里面陆续地加入东西,以及压力测试等,同时也是为3月的春招做准备。

            首先需要使用socket编程,实现客户端和服务器端的信息交互,前期实现的功能有5个:注册,登陆,退出,1对1聊天,1对多聊天。

    服务器端接收处理数据,以及与客户端交流的大概架构
    这里写图片描述

    服务器端:首先确定使用多线程来处理客户端请求,主线程发送accept的值将接收的客户端套接字发给支线程,之后全权交给支线程去处理,主线程继续去接收。
            相应的支线程发送自己监听套接字的压力值,方便主线程下一次选择压力最小的支线程。
            支线程监听套接字后recv,处理完成后给客户回复结果,如:登陆成功等。
    客户端:主线程不断接受命令,解析后处理,向服务器端发送数据。支线程在程序开始时开始执行,监听服务器端发送的数据。
    
    • 对于主线程和支线程之间的通信选择sockpair,主线程保存0端,支线程保存1端。
    • 对于搜索,使用了STL中的map
    • 使用MVC设计模式,每个线程都有一个控制台,数据解析后去寻找相应的视图,进行处理。
    • 对于监听套接字,使用了libevent库,之后有时间了去剖剖源码。
    • 对于数据的打包,解析,使用了json
    • 用户的数据使用mysql存储。

      mysql中创建了三张表:Usr('name','password'),Online('name','cli_fd'),Offline('name','message');
      还有一些细节实现,登陆时如果已经在线则将原来的顶掉,并发送一个异地登陆。
      如果对方不在线时发送消息,加入到离线消息,在对方上线时提醒。
      

    现在主要完成了服务器端的代码,实现了登陆 注册 退出 1对1聊天,可以跑起来了,但是客户端的细节很粗糙,更像是mail聊天,如果有时间的话可以弄一弄。

  • 相关阅读:
    字符串的输入函数gets
    51nod 1113(矩阵快速幂简单题)
    矩阵快速幂基础
    hdu-2141(二分查找+暴力)
    opencv 摄像头 指定大小 数量 的图片
    Windows环境下使用tensorflow opencv的小事儿
    Vue+D3 V4 实现模块化
    Vue安装
    js 日历
    js基础
  • 原文地址:https://www.cnblogs.com/zhangtiezi/p/8367143.html
Copyright © 2011-2022 走看看