C++项目 | 集群聊天服务器 | 服务器异常退出
本次主要处理服务器程序因为ctrl+c退出的异常,会将所有online的改为offline
1.main.cpp
捕获ctrl+c信号,进行处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include"chatserver.hpp" #include"chatservice.hpp" #include<iostream> #include<signal.h> using namespace std;
void resetHandler(int) { ChatService::instance()->reset(); exit(0); }
int main() { signal(SIGINT,resetHandler);
EventLoop loop; InetAddress addr("127.0.0.1",6000); ChatServer server(&loop,addr,"ChatServer");
server.start(); loop.loop(); return 0; }
|
2. ChatService::instance()->reset()
1 2 3 4 5 6
| void ChatService::reset() { _userModel.resetState(); }
|
3. _userModel.resetState()
1 2 3 4 5 6 7 8 9 10 11 12
| void UserModel::resetState() { char sql[1024]="update user set state = 'offline' where state = 'online'";
MySQL mysql; if(mysql.connect()) { mysql.update(sql); } }
|
4.测试

张三登录后,服务器异常退出,张三的状态由登录后的online改为服务器退出后的offline
