safe:安全性更新,服务端改为从不主动给客户端发送信息,并添加客户端上线时间查看功能。
This commit is contained in:
		
							parent
							
								
									21d4570028
								
							
						
					
					
						commit
						698d51a548
					
				@ -56,6 +56,12 @@ void CClient::run(const std::string& ip, const std::string& port)
 | 
				
			|||||||
    client_->async_recv();
 | 
					    client_->async_recv();
 | 
				
			||||||
    hearts_ = std::thread([&]() { hearts(); });
 | 
					    hearts_ = std::thread([&]() { hearts(); });
 | 
				
			||||||
    std::thread thread([&]() { io_context_.run(); });
 | 
					    std::thread thread([&]() { io_context_.run(); });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CFrameBuffer* bf = new CFrameBuffer();
 | 
				
			||||||
 | 
					    bf->type_ = TYPE_GET_ID;
 | 
				
			||||||
 | 
					    send_frame(bf);
 | 
				
			||||||
 | 
					    delete bf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logger_->warn("SupportCmd:Get|Up|Down|Cancel|Update");
 | 
					    logger_->warn("SupportCmd:Get|Up|Down|Cancel|Update");
 | 
				
			||||||
    char line[512]{};
 | 
					    char line[512]{};
 | 
				
			||||||
    while (std::cin.getline(line, 512)) {
 | 
					    while (std::cin.getline(line, 512)) {
 | 
				
			||||||
@ -443,7 +449,7 @@ void CClient::handle_frame(CFrameBuffer* buf)
 | 
				
			|||||||
                    task_list_[index]->id = id;
 | 
					                    task_list_[index]->id = id;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                logger_->debug("***********************************************");
 | 
					                logger_->debug("**********************************************************");
 | 
				
			||||||
                logger_->info("{}", real);
 | 
					                logger_->info("{}", real);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -54,7 +54,8 @@ std::vector<TaskList> CTcpServer::get_clients()
 | 
				
			|||||||
        TaskList t;
 | 
					        TaskList t;
 | 
				
			||||||
        t.id_ = item.first;
 | 
					        t.id_ = item.first;
 | 
				
			||||||
        t.task_ = item.second->task_;
 | 
					        t.task_ = item.second->task_;
 | 
				
			||||||
        t.time_ = item.second->time_;
 | 
					        t.task_time_ = item.second->task_time_;
 | 
				
			||||||
 | 
					        t.online_time_ = item.second->online_time_;
 | 
				
			||||||
        result.push_back(t);
 | 
					        result.push_back(t);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return result;
 | 
					    return result;
 | 
				
			||||||
@ -67,7 +68,7 @@ void CTcpServer::get_client_list(CFrameBuffer** buf)
 | 
				
			|||||||
    std::string msg;
 | 
					    std::string msg;
 | 
				
			||||||
    int index = 1;
 | 
					    int index = 1;
 | 
				
			||||||
    for (const auto& item : vec) {
 | 
					    for (const auto& item : vec) {
 | 
				
			||||||
        msg.append(fmt::format("[{}][{}][{}]", index, item.id_, item.time_));
 | 
					        msg.append(fmt::format("[{}][{}][{}][{}]", index, item.id_, item.online_time_, item.task_time_));
 | 
				
			||||||
        auto files = COfStr::split(item.task_, "|");
 | 
					        auto files = COfStr::split(item.task_, "|");
 | 
				
			||||||
        for (const auto& file : files) {
 | 
					        for (const auto& file : files) {
 | 
				
			||||||
            msg.append("\n" + file);
 | 
					            msg.append("\n" + file);
 | 
				
			||||||
@ -114,7 +115,7 @@ void CTcpServer::trans_data(CFrameBuffer* buf)
 | 
				
			|||||||
        logger_->info("[{}] UpList. {}", buf->fid_, turn_files_path);
 | 
					        logger_->info("[{}] UpList. {}", buf->fid_, turn_files_path);
 | 
				
			||||||
        if (fcli) {
 | 
					        if (fcli) {
 | 
				
			||||||
            fcli->task_ = files_path;
 | 
					            fcli->task_ = files_path;
 | 
				
			||||||
            fcli->time_ = OfUtil::now_time();
 | 
					            fcli->task_time_ = OfUtil::now_time();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -122,10 +123,15 @@ void CTcpServer::trans_data(CFrameBuffer* buf)
 | 
				
			|||||||
        logger_->info("[{}] Cancle Task.", buf->fid_);
 | 
					        logger_->info("[{}] Cancle Task.", buf->fid_);
 | 
				
			||||||
        if (fcli) {
 | 
					        if (fcli) {
 | 
				
			||||||
            fcli->task_.clear();
 | 
					            fcli->task_.clear();
 | 
				
			||||||
            fcli->time_.clear();
 | 
					            fcli->task_time_.clear();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    case TYPE_GET_ID: {
 | 
				
			||||||
 | 
					        buf->tid_ = buf->fid_;
 | 
				
			||||||
 | 
					        send_frame(fcli->socket_, buf);
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    case TYPE_JUDGE_ACTIVE: {
 | 
					    case TYPE_JUDGE_ACTIVE: {
 | 
				
			||||||
        if (fcli && tcli) {
 | 
					        if (fcli && tcli) {
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
@ -194,6 +200,7 @@ void CTcpServer::accept_client()
 | 
				
			|||||||
                    logger_->info("New connection from {}", client_key);
 | 
					                    logger_->info("New connection from {}", client_key);
 | 
				
			||||||
                    auto cache = std::make_shared<ClientCache>();
 | 
					                    auto cache = std::make_shared<ClientCache>();
 | 
				
			||||||
                    cache->socket_ = socket;
 | 
					                    cache->socket_ = socket;
 | 
				
			||||||
 | 
					                    cache->online_time_ = OfUtil::now_time();
 | 
				
			||||||
                    client_map_[client_key] = cache;
 | 
					                    client_map_[client_key] = cache;
 | 
				
			||||||
                    can = true;
 | 
					                    can = true;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@ -233,12 +240,6 @@ void CTcpServer::th_client(std::shared_ptr<asio::ip::tcp::socket> socket, const
 | 
				
			|||||||
            cache = client_map_[client_key];
 | 
					            cache = client_map_[client_key];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        auto* f = new CFrameBuffer();
 | 
					 | 
				
			||||||
        f->type_ = TYPE_GET_ID;
 | 
					 | 
				
			||||||
        f->tid_ = client_key;
 | 
					 | 
				
			||||||
        send_frame(socket, f);
 | 
					 | 
				
			||||||
        delete f;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        while (true) {
 | 
					        while (true) {
 | 
				
			||||||
            asio::error_code error;
 | 
					            asio::error_code error;
 | 
				
			||||||
            size_t length = socket->read_some(asio::buffer(cache->tmp_buf_), error);
 | 
					            size_t length = socket->read_some(asio::buffer(cache->tmp_buf_), error);
 | 
				
			||||||
 | 
				
			|||||||
@ -12,13 +12,15 @@ struct ClientCache {
 | 
				
			|||||||
    CMutBuffer buffer_{};
 | 
					    CMutBuffer buffer_{};
 | 
				
			||||||
    std::array<char, g_BuffSize> tmp_buf_{};
 | 
					    std::array<char, g_BuffSize> tmp_buf_{};
 | 
				
			||||||
    std::string task_{};
 | 
					    std::string task_{};
 | 
				
			||||||
    std::string time_{};
 | 
					    std::string task_time_{};
 | 
				
			||||||
 | 
					    std::string online_time_{};
 | 
				
			||||||
    FrameType cur_type_{TYPE_DEFAULT};
 | 
					    FrameType cur_type_{TYPE_DEFAULT};
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
struct TaskList {
 | 
					struct TaskList {
 | 
				
			||||||
    std::string id_{};
 | 
					    std::string id_{};
 | 
				
			||||||
    std::string task_{};
 | 
					    std::string task_{};
 | 
				
			||||||
    std::string time_{};
 | 
					    std::string task_time_{};
 | 
				
			||||||
 | 
					    std::string online_time_{};
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CTcpServer
 | 
					class CTcpServer
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user