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; }