int CGateServer::AppStart() { ServerInit(); ServerAddr addr = CGateConfig::Instance()->GetClientAddr(); int ret = netlib_listen(addr.ip.c_str(), addr.port, client_conn_callback, NULL); if (ret == NETLIB_ERROR) { return ret; } init_client_conn(); ConnectRouteServer(); netlib_eventloop(); return 0; }
int main(int argc, char* argv[]) { if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { printf("Server Version: RouteServer/%s\n", VERSION); printf("Server Build: %s %s\n", __DATE__, __TIME__); return 0; } signal(SIGPIPE, SIG_IGN); srand(time(NULL)); CConfigFileReader config_file("routeserver.conf"); char* listen_ip = config_file.GetConfigName("ListenIP"); char* str_listen_msg_port = config_file.GetConfigName("ListenMsgPort"); if (!listen_ip || !str_listen_msg_port) { log("config item missing, exit... "); return -1; } uint16_t listen_msg_port = atoi(str_listen_msg_port); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; CStrExplode listen_ip_list(listen_ip, ';'); for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(listen_ip_list.GetItem(i), listen_msg_port, route_serv_callback, NULL); if (ret == NETLIB_ERROR) return ret; } printf("server start listen on: %s:%d\n", listen_ip, listen_msg_port); init_routeconn_timer_callback(); printf("now enter the event loop...\n"); writePid(); netlib_eventloop(); return 0; }
RpcServer::RpcServer(uint16_t port) { printf("rpc server init\n"); int fd = netlib_socket(); if (fd < 0) { printf("netlib_socket error:%d\n",errno); exit(EXIT_FAILURE); } if(netlib_bind(fd, port) < 0) { printf("netlib_bind error:%d\n",errno); exit(EXIT_FAILURE); } if (netlib_listen(fd,5)) { printf("netlib_listen error:%d\n",errno); exit(EXIT_FAILURE); } listen_fd_ = fd; }
int main(int argc, char* argv[]) { if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { printf("Server Version: HttpMsgServer/%s\n", VERSION); printf("Server Build: %s %s\n", __DATE__, __TIME__); return 0; } signal(SIGPIPE, SIG_IGN); srand(time(NULL)); log("MsgServer max files can open: %d ", getdtablesize()); CConfigFileReader config_file("httpmsgserver.conf"); char* listen_ip = config_file.GetConfigName("ListenIP"); char* str_listen_port = config_file.GetConfigName("ListenPort"); uint32_t db_server_count = 0; serv_info_t* db_server_list = read_server_config(&config_file, "DBServerIP", "DBServerPort", db_server_count); uint32_t route_server_count = 0; serv_info_t* route_server_list = read_server_config(&config_file, "RouteServerIP", "RouteServerPort", route_server_count); // 到BusinessServer的开多个并发的连接 uint32_t concurrent_db_conn_cnt = DEFAULT_CONCURRENT_DB_CONN_CNT; uint32_t db_server_count2 = db_server_count * DEFAULT_CONCURRENT_DB_CONN_CNT; char* concurrent_db_conn = config_file.GetConfigName("ConcurrentDBConnCnt"); if (concurrent_db_conn) { concurrent_db_conn_cnt = atoi(concurrent_db_conn); db_server_count2 = db_server_count * concurrent_db_conn_cnt; } serv_info_t* db_server_list2 = NULL; if (db_server_count2 > 0) { db_server_list2 = new serv_info_t [ db_server_count2]; for (uint32_t i = 0; i < db_server_count2; i++) { db_server_list2[i].server_ip = db_server_list[i / concurrent_db_conn_cnt].server_ip.c_str(); db_server_list2[i].server_port = db_server_list[i / concurrent_db_conn_cnt].server_port; } } if (!listen_ip || !str_listen_port) { log("config file miss, exit... "); return -1; } uint16_t listen_port = atoi(str_listen_port); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; CStrExplode listen_ip_list(listen_ip, ';'); for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(listen_ip_list.GetItem(i), listen_port, http_callback, NULL); if (ret == NETLIB_ERROR) return ret; } printf("server start listen on: %s:%d\n", listen_ip, listen_port); init_http_conn(); if (db_server_count > 0) { HTTP::init_db_serv_conn(db_server_list2, db_server_count2, concurrent_db_conn_cnt); } if (route_server_count > 0) { HTTP::init_route_serv_conn(route_server_list, route_server_count); } printf("now enter the event loop...\n"); writePid(); netlib_eventloop(); return 0; }
int main(int argc, char* argv[]) { if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { // printf("Server Version: MsgServer/%s\n", VERSION); printf("Server Build: %s %s\n", __DATE__, __TIME__); return 0; } signal(SIGPIPE, SIG_IGN); srand(time(NULL)); log("MsgServer max files can open: %d ", getdtablesize()); CConfigFileReader config_file("msgserver.conf"); char* listen_ip = config_file.GetConfigName("ListenIP"); char* str_listen_port = config_file.GetConfigName("ListenPort"); char* ip_addr1 = config_file.GetConfigName("IpAddr1"); // 电信IP char* ip_addr2 = config_file.GetConfigName("IpAddr2"); // 网通IP char* str_max_conn_cnt = config_file.GetConfigName("MaxConnCnt"); char* str_aes_key = config_file.GetConfigName("aesKey"); uint32_t db_server_count = 0; serv_info_t* db_server_list = read_server_config(&config_file, "DBServerIP", "DBServerPort", db_server_count); uint32_t login_server_count = 0; serv_info_t* login_server_list = read_server_config(&config_file, "LoginServerIP", "LoginServerPort", login_server_count); uint32_t route_server_count = 0; serv_info_t* route_server_list = read_server_config(&config_file, "RouteServerIP", "RouteServerPort", route_server_count); uint32_t push_server_count = 0; serv_info_t* push_server_list = read_server_config(&config_file, "PushServerIP", "PushServerPort", push_server_count); uint32_t file_server_count = 0; serv_info_t* file_server_list = read_server_config(&config_file, "FileServerIP", "FileServerPort", file_server_count); if (!str_aes_key || strlen(str_aes_key)!=32) { log("aes key is invalied"); return -1; } pAes = new CAes(str_aes_key); // 必须至少配置2个BusinessServer实例, 一个用于用户登录业务,一个用于其他业务 // 这样当其他业务量非常繁忙时,也不会影响客服端的登录验证 // 建议配置4个实例,这样更新BusinessServer时,不会影响业务 if (db_server_count < 2) { log("DBServerIP need 2 instance at lest "); return 1; } // 到BusinessServer的开多个并发的连接 uint32_t concurrent_db_conn_cnt = DEFAULT_CONCURRENT_DB_CONN_CNT; uint32_t db_server_count2 = db_server_count * DEFAULT_CONCURRENT_DB_CONN_CNT; char* concurrent_db_conn = config_file.GetConfigName("ConcurrentDBConnCnt"); if (concurrent_db_conn) { concurrent_db_conn_cnt = atoi(concurrent_db_conn); db_server_count2 = db_server_count * concurrent_db_conn_cnt; } serv_info_t* db_server_list2 = new serv_info_t [ db_server_count2]; for (uint32_t i = 0; i < db_server_count2; i++) { db_server_list2[i].server_ip = db_server_list[i / concurrent_db_conn_cnt].server_ip.c_str(); db_server_list2[i].server_port = db_server_list[i / concurrent_db_conn_cnt].server_port; } if (!listen_ip || !str_listen_port || !ip_addr1) { log("config file miss, exit... "); return -1; } // 没有IP2,就用第一个IP if (!ip_addr2) { ip_addr2 = ip_addr1; } uint16_t listen_port = atoi(str_listen_port); uint32_t max_conn_cnt = atoi(str_max_conn_cnt); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; CStrExplode listen_ip_list(listen_ip, ';'); for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(listen_ip_list.GetItem(i), listen_port, msg_serv_callback, NULL); if (ret == NETLIB_ERROR) return ret; } printf("server start listen on: %s:%d\n", listen_ip, listen_port); init_msg_conn(); init_file_serv_conn(file_server_list, file_server_count); init_db_serv_conn(db_server_list2, db_server_count2, concurrent_db_conn_cnt); init_login_serv_conn(login_server_list, login_server_count, ip_addr1, ip_addr2, listen_port, max_conn_cnt); init_route_serv_conn(route_server_list, route_server_count); init_push_serv_conn(push_server_list, push_server_count); printf("now enter the event loop...\n"); writePid(); netlib_eventloop(); return 0; }
int main(int argc, char* argv[]) { if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { cout << "HttpMsgServer " << endl; cout << "Server Build:" << __DATE__ << __TIME__ << endl; return ERR_SUCCESS; } signal(SIGPIPE, SIG_IGN); srand(time(NULL)); //日志类初始化 if (!Logger.Init(2000, 0, 0)){ cout <<"log init failed!!!"<< endl; return -1; } /* 设置打印级别 */ Logger.SetLogLevel(0x0040, true); Logger.Log(INFO, "The Server max files can open: %d ", getdtablesize()); CConfigFileReader* configFile = new CConfigFileReader("httpsvr.conf"); char* listenIp = configFile->GetConfigName("ListenIP"); char* strListenPort = configFile->GetConfigName("ListenPort"); char* strThreadNum = configFile->GetConfigName("ThreadNum"); //初始化数据库连接及管理类 CDBManager* pDBManager = CDBManager::getInstance(configFile); if (!pDBManager) { Logger.Log(ERROR, "DBManager init failed"); return ERR_FAILED; } pDBManager->Init(); if (!listenIp || !strListenPort) { Logger.Log(ERROR, "config file miss, exit "); return ERR_FAILED; } int ret = netlib_init(); if (ret == NETLIB_ERROR){ return ret; } uint16_t listenPort = atoi(strListenPort); CStrExplode listen_ip_list(listenIp, ';'); for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(listen_ip_list.GetItem(i), listenPort, HttpCallback, NULL); if (ret == NETLIB_ERROR) return ret; } cout << "server start listen on: " << listenIp << listenPort << endl; uint32_t threadNum = atoi(strThreadNum); InitHttpConn(threadNum);//初始化线程,增加心跳定时器 cout << "now enter the event loop!" << endl; writePid(); netlib_eventloop(); return 0; }
int main(int argc, char* argv[]) { if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { printf("Server Version: LoginServer/%s\n", VERSION); printf("Server Build: %s %s\n", __DATE__, __TIME__); return 0; } signal(SIGPIPE, SIG_IGN); CConfigFileReader config_file("loginserver.conf"); char* client_listen_ip = config_file.GetConfigName("ClientListenIP"); char* str_client_port = config_file.GetConfigName("ClientPort"); char* http_listen_ip = config_file.GetConfigName("HttpListenIP"); char* str_http_port = config_file.GetConfigName("HttpPort"); char* msg_server_listen_ip = config_file.GetConfigName("MsgServerListenIP"); char* str_msg_server_port = config_file.GetConfigName("MsgServerPort"); char* str_msfs_url = config_file.GetConfigName("msfs"); char* str_discovery = config_file.GetConfigName("discovery"); if (!msg_server_listen_ip || !str_msg_server_port || !http_listen_ip || !str_http_port || !str_msfs_url || !str_discovery) { log("config item missing, exit... "); return -1; } uint16_t client_port = atoi(str_client_port); uint16_t msg_server_port = atoi(str_msg_server_port); uint16_t http_port = atoi(str_http_port); strMsfsUrl = str_msfs_url; strDiscovery = str_discovery; pIpParser = new IpParser(); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; CStrExplode client_listen_ip_list(client_listen_ip, ';'); for (uint32_t i = 0; i < client_listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(client_listen_ip_list.GetItem(i), client_port, client_callback, NULL); if (ret == NETLIB_ERROR) return ret; } CStrExplode msg_server_listen_ip_list(msg_server_listen_ip, ';'); for (uint32_t i = 0; i < msg_server_listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(msg_server_listen_ip_list.GetItem(i), msg_server_port, msg_serv_callback, NULL); if (ret == NETLIB_ERROR) return ret; } CStrExplode http_listen_ip_list(http_listen_ip, ';'); for (uint32_t i = 0; i < http_listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(http_listen_ip_list.GetItem(i), http_port, http_callback, NULL); if (ret == NETLIB_ERROR) return ret; } printf("server start listen on:\nFor client %s:%d\nFor MsgServer: %s:%d\nFor http:%s:%d\n", client_listen_ip, client_port, msg_server_listen_ip, msg_server_port, http_listen_ip, http_port); init_login_conn(); init_http_conn(); printf("now enter the event loop...\n"); writePid(); netlib_eventloop(); return 0; }
int main(int argc, char* argv[]) { #if 0 pid_t pid = fork(); if (pid < 0) { exit(-1); } else if (pid > 0) { exit(0); } setsid(); #endif if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { printf("Server Version: FileServer/%s\n", VERSION); printf("Server Build: %s %s\n", __DATE__, __TIME__); return 0; } signal(SIGPIPE, SIG_IGN); // ¶ÁÈ¡ÅäÖÃÎļþ CConfigFileReader config_file("fileserver.conf"); char* str_client_listen_ip = config_file.GetConfigName("ClientListenIP"); char* str_client_listen_port = config_file.GetConfigName("ClientListenPort"); char* str_msg_server_listen_ip = config_file.GetConfigName("MsgServerListenIP"); char* str_msg_server_listen_port = config_file.GetConfigName("MsgServerListenPort"); char* str_task_timeout = config_file.GetConfigName("TaskTimeout"); if (!str_client_listen_ip || !str_client_listen_port || !str_msg_server_listen_ip || !str_msg_server_listen_port) { log("config item missing, exit... "); return -1; } uint16_t client_listen_port = atoi(str_client_listen_port); CStrExplode client_listen_ip_list(str_client_listen_ip, ';'); std::list<IM::BaseDefine::IpAddr> q; for (uint32_t i = 0; i < client_listen_ip_list.GetItemCnt(); i++) { ConfigUtil::GetInstance()->AddAddress(client_listen_ip_list.GetItem(i), client_listen_port); } uint16_t msg_server_listen_port = atoi(str_msg_server_listen_port); uint32_t task_timeout = atoi(str_task_timeout); ConfigUtil::GetInstance()->SetTaskTimeout(task_timeout); InitializeFileMsgServerConn(); InitializeFileClientConn(); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; for (uint32_t i = 0; i < client_listen_ip_list.GetItemCnt(); i++) { // sokcet bind listen FileClientConnCallback ret = netlib_listen(client_listen_ip_list.GetItem(i), client_listen_port, FileClientConnCallback, NULL); if (ret == NETLIB_ERROR) { printf("listen %s:%d error!!\n", client_listen_ip_list.GetItem(i), client_listen_port); return ret; } else { printf("server start listen on %s:%d\n", client_listen_ip_list.GetItem(i), client_listen_port); } } // sokcet bind listen FileMsgServerConnCallback ret = netlib_listen(str_msg_server_listen_ip, msg_server_listen_port, FileMsgServerConnCallback, NULL); if (ret == NETLIB_ERROR) { printf("listen %s:%d error!!\n", str_msg_server_listen_ip, msg_server_listen_port); return ret; } else { printf("server start listen on %s:%d\n", str_msg_server_listen_ip, msg_server_listen_port); } printf("now enter the event loop...\n"); writePid(); netlib_eventloop(); printf("exiting.......\n"); log("exit"); return 0; }
int main(int argc, char* argv[]) { pid_t pid = fork(); if (pid < 0) { exit(-1); } else if (pid > 0) { exit(0); } setsid(); if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { printf("Server Version: FileServer/%s\n", VERSION); printf("Server Build: %s %s\n", __DATE__, __TIME__); return 0; } signal(SIGPIPE, SIG_IGN); CConfigFileReader config_file("fileserver.conf"); char* listen_ip = config_file.GetConfigName("Address"); char* str_listen_port = config_file.GetConfigName("ListenPort"); char* str_task_timeout = config_file.GetConfigName("TaskTimeout"); if (!listen_ip || !str_listen_port) { log("config item missing, exit...\n"); return -1; } uint16_t listen_port = atoi(str_listen_port); uint32_t task_timeout = atoi(str_task_timeout); CStrExplode listen_ip_list(listen_ip, ';'); std::list<svr_ip_addr_t> q; for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) { svr_ip_addr_t t(listen_ip_list.GetItem(i), listen_port); q.push_back(t); } init_file_conn(q, task_timeout); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; // for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen("0.0.0.0"/*"127.0.0.1"*/, /*listen_ip_list.GetItem(i), */listen_port, file_serv_callback, NULL); if (ret == NETLIB_ERROR) { printf("Failed to listen on port %d\n", listen_port); log("Failed to listen on port %d\n", listen_port); return ret; } // } printf("server start listen on %s:%d\n", listen_ip, listen_port); printf("now enter the event loop...\n"); netlib_eventloop(); printf("exiting.......\n"); log("exit\n"); return 0; }
int main(int argc, char* argv[]) { if ((argc == 2) && (strcmp(argv[1], "-v") == 0)) { printf("Server Version: DBProxyServer/%s\n", VERSION); printf("Server Build: %s %s\n", __DATE__, __TIME__); return 0; } signal(SIGPIPE, SIG_IGN); srand(time(NULL)); CacheManager* pCacheManager = CacheManager::getInstance(CONFIGFILE_NAME); if (!pCacheManager) { log("CacheManager init failed"); return -1; } CDBManager* pDBManager = CDBManager::getInstance(CONFIGFILE_NAME); if (!pDBManager) { log("DBManager init failed"); return -1; } // 主线程初始化单例,不然在工作线程可能会出现多次初始化 if (!CAudioModel::getInstance()) { return -1; } if (!CGroupMessageModel::getInstance()) { return -1; } if (!CGroupModel::getInstance()) { return -1; } if (!CMessageModel::getInstance()) { return -1; } if (!CSessionModel::getInstance()) { return -1; } if(!CRelationModel::getInstance()) { return -1; } if (!CUserModel::getInstance()) { return -1; } if (!CFileModel::getInstance()) { return -1; } CConfigFileReader config_file(CONFIGFILE_NAME); char* listen_ip = config_file.GetConfigName("ListenIP"); char* str_listen_port = config_file.GetConfigName("ListenPort"); char* str_thread_num = config_file.GetConfigName("ThreadNum"); char* str_file_site = config_file.GetConfigName("MsfsSite"); char* str_aes_key = config_file.GetConfigName("aesKey"); if (!listen_ip || !str_listen_port || !str_thread_num || !str_file_site || !str_aes_key) { log("missing ListenIP/ListenPort/ThreadNum/MsfsSite/aesKey, exit..."); return -1; } if(strlen(str_aes_key) != 32) { log("aes key is invalied"); return -2; } string strAesKey(str_aes_key, 32); CAes cAes = CAes(strAesKey); string strAudio = "[语音]"; char* pAudioEnc; uint32_t nOutLen; if(cAes.Encrypt(strAudio.c_str(), strAudio.length(), &pAudioEnc, nOutLen) == 0) { strAudioEnc.clear(); strAudioEnc.append(pAudioEnc, nOutLen); cAes.Free(pAudioEnc); } uint16_t listen_port = atoi(str_listen_port); uint32_t thread_num = atoi(str_thread_num); string strFileSite(str_file_site); CAudioModel::getInstance()->setUrl(strFileSite); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; /// yunfan add 2014.9.28 // for 603 push curl_global_init(CURL_GLOBAL_ALL); //初始化libcurl,CURL_GLOBAL_ALL初始化所有可能的调用 /// yunfan add end init_proxy_conn(thread_num); CSyncCenter::getInstance()->init(); CSyncCenter::getInstance()->startSync(); CStrExplode listen_ip_list(listen_ip, ';'); for (uint32_t i = 0; i < listen_ip_list.GetItemCnt(); i++) { ret = netlib_listen(listen_ip_list.GetItem(i), listen_port, proxy_serv_callback, NULL); if (ret == NETLIB_ERROR) return ret; } printf("server start listen on: %s:%d\n", listen_ip, listen_port); printf("now enter the event loop...\n"); writePid(); netlib_eventloop(10); return 0; }