int main(int argc, char* argv[]) { g_cmd_thread.StartThread(); signal(SIGPIPE, SIG_IGN); int ret = netlib_init(); if (ret == NETLIB_ERROR) return ret; init_client_conn(); 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; }
int _cdecl main(int argc, char *argv[]) { int c; int not_inetd = 0; #ifdef WIN32 BOOL child = FALSE; #endif char arg1[BUFSIZ], arg2[BUFSIZ]; #ifndef PATH_MAX #define PATH_MAX MAX_PATH #endif char FileName[PATH_MAX]; /* for opening the debug log file */ struct sockaddr name; netperf_socklen_t namelen = sizeof(name); #ifdef WIN32 WSADATA wsa_data ; /* Initialize the winsock lib ( version 2.2 ) */ if ( WSAStartup(MAKEWORD(2,2), &wsa_data) == SOCKET_ERROR ){ printf("WSAStartup() failed : %d\n", GetLastError()) ; return 1 ; } #endif /* WIN32 */ /* Save away the program name */ program = (char *)malloc(strlen(argv[0]) + 1); if (program == NULL) { printf("malloc(%d) failed!\n", strlen(argv[0]) + 1); return 1 ; } strcpy(program, argv[0]); netlib_init(); /* Scan the command line to see if we are supposed to set-up our own */ /* listen socket instead of relying on inetd. */ /* first set a copy of initial values */ strncpy(local_host_name,"0.0.0.0",sizeof(local_host_name)); local_address_family = AF_UNSPEC; strncpy(listen_port,TEST_PORT,sizeof(listen_port)); while ((c = getopt(argc, argv, SERVER_ARGS)) != EOF) { switch (c) { case '?': case 'h': print_netserver_usage(); exit(1); case 'd': /* we want to set the debug file name sometime */ debug++; break; case 'L': not_inetd = 1; break_args_explicit(optarg,arg1,arg2); if (arg1[0]) { strncpy(local_host_name,arg1,sizeof(local_host_name)); } if (arg2[0]) { local_address_family = parse_address_family(arg2); /* if only the address family was set, we may need to set the local_host_name accordingly. since our defaults are IPv4 this should only be necessary if we have IPv6 support raj 2005-02-07 */ #if defined (AF_INET6) if (!arg1[0]) { strncpy(local_host_name,"::0",sizeof(local_host_name)); } #endif } break; case 'n': shell_num_cpus = atoi(optarg); if (shell_num_cpus > MAXCPUS) { fprintf(stderr, "netserver: This version can only support %d CPUs. Please", MAXCPUS); fprintf(stderr, " increase MAXCPUS in netlib.h and recompile.\n"); fflush(stderr); exit(1); } break; case 'p': /* we want to open a listen socket at a */ /* specified port number */ strncpy(listen_port,optarg,sizeof(listen_port)); not_inetd = 1; break; case '4': local_address_family = AF_INET; break; case '6': #if defined(AF_INET6) local_address_family = AF_INET6; strncpy(local_host_name,"::0",sizeof(local_host_name)); #else local_address_family = AF_UNSPEC; #endif break; case 'v': /* say how much to say */ verbosity = atoi(optarg); break; case 'V': printf("Netperf version %s\n",NETPERF_VERSION); exit(0); break; #ifdef WIN32 /*+*+SAF */ case 'I': child = TRUE; /* This is the handle we expect to inherit. */ /*+*+SAF server_sock = (HANDLE)atoi(optarg); */ break; case 'i': /* This is a handle we should NOT inherit. */ /*+*+SAF CloseHandle((HANDLE)atoi(optarg)); */ break; #endif } } /* +*+SAF I need a better way to find inherited handles I should close! */ /* +*+SAF Use DuplicateHandle to force inheritable attribute (or reset it)? */ /* unlink(DEBUG_LOG_FILE); */ strcpy(FileName, DEBUG_LOG_FILE); #ifndef WIN32 snprintf(&FileName[strlen(FileName)], sizeof(FileName) - strlen(FileName), "_%d", getpid()); if ((where = fopen(FileName, "w")) == NULL) { perror("netserver: debug file"); exit(1); } #else { if (child) { snprintf(&FileName[strlen(FileName)], sizeof(FileName) - strlen(FileName), "_%x", getpid()); } /* Hopefully, by closing stdout & stderr, the subsequent fopen calls will get mapped to the correct std handles. */ fclose(stdout); if ((where = fopen(FileName, "w")) == NULL) { perror("netserver: fopen of debug file as new stdout failed!"); exit(1); } fclose(stderr); if ((where = fopen(FileName, "w")) == NULL) { fprintf(stdout, "fopen of debug file as new stderr failed!\n"); exit(1); } } #endif #ifndef WIN32 chmod(DEBUG_LOG_FILE,0644); #endif #if WIN32 if (child) { server_sock = (SOCKET)GetStdHandle(STD_INPUT_HANDLE); } #endif /* if we are not a child of an inetd or the like, then we should open a socket and hang listens off of it. otherwise, we should go straight into processing requests. the do_listen() routine will sit in an infinite loop accepting connections and forking child processes. the child processes will call process_requests */ /* If fd 0 is not a socket then assume we're not being called */ /* from inetd and start server socket on the default port. */ /* this enhancement comes from [email protected] (Von Welch) */ if (not_inetd) { /* the user specified a port number on the command line */ set_up_server(local_host_name,listen_port,local_address_family); } #ifdef WIN32 /* OK, with Win2003 WinNT's POSIX subsystem is gone, and hence so is */ /* fork. But hopefully the kernel support will continue to exist */ /* for some time. We are not counting on the address space */ /* copy_on_write support, since it isn't exposed except through the */ /* NT native APIs (which are not public). We will try to use the */ /* InheritHandles flag in CreateProcess though since this is public */ /* and is used for more than just POSIX so hopefully it won't go */ /* away. */ else if (TRUE) { if (child) { process_requests(); } else { strncpy(listen_port,TEST_PORT,sizeof(listen_port)); set_up_server(local_host_name,listen_port,local_address_family); } } #endif #if !defined(__VMS) else if (getsockname(0, &name, &namelen) == SOCKET_ERROR) { /* we may not be a child of inetd */ if (errno == ENOTSOCK) { strncpy(listen_port,TEST_PORT,sizeof(listen_port)); set_up_server(local_host_name,listen_port,local_address_family); } } #endif /* !defined(__VMS) */ else { /* we are probably a child of inetd, or are being invoked via the VMS auxilliarly server mechanism */ #if !defined(__VMS) server_sock = 0; #else if ( (server_sock = socket(TCPIP$C_AUXS, SOCK_STREAM, 0)) == INVALID_SOCKET ) { perror("Failed to grab aux server socket" ); exit(1); } #endif /* !defined(__VMS) */ process_requests(); } #ifdef WIN32 /* Cleanup the winsock lib */ WSACleanup(); #endif return(0); }
int _cdecl main(int argc, char *argv[]) { #ifdef WIN32 WSADATA wsa_data ; /* Initialize the winsock lib do we still want version 2.2? */ if ( WSAStartup(MAKEWORD(2,2), &wsa_data) == SOCKET_ERROR ){ printf("WSAStartup() failed : %lu\n", GetLastError()) ; return -1 ; } #endif /* WIN32 */ /* Save away the program name */ program = (char *)malloc(strlen(argv[0]) + 1); if (program == NULL) { printf("malloc for program name failed!\n"); return -1 ; } strcpy(program, argv[0]); init_netserver_globals(); netlib_init(); strncpy(local_host_name,"",sizeof(local_host_name)); local_address_family = AF_UNSPEC; strncpy(listen_port,TEST_PORT,sizeof(listen_port)); scan_netserver_args(argc, argv); check_if_inetd(); if (child) { /* we are the child of either an inetd or parent netserver via spawning (Windows) rather than fork()ing. if we were fork()ed we would not be coming through this way. set_server_sock() must be called before open_debug_file() or there is a chance that we'll toast the descriptor when we do not wish it. */ set_server_sock(); open_debug_file(); process_requests(); } else if (daemon_parent) { /* we are the parent daemonized netserver process. accept_connections() will decide if we want to spawn a child process */ accept_connections(); } else { /* we are the top netserver process, so we have to create the listen endpoint(s) and decide if we want to daemonize */ setup_listens(local_host_name,listen_port,local_address_family); if (want_daemonize) { daemonize(); } accept_connections(); } unlink_empty_debug_file(); #ifdef WIN32 WSACleanup(); #endif return 0; }
void CGateServer::ServerInit() { int ret = netlib_init(); if (ret == NETLIB_ERROR) { log("netlib_init error"); } }
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 _cdecl main(int argc, char *argv[]) { #ifdef WIN32 WSADATA wsa_data ; /* Initialize the winsock lib ( version 2.2 ) */ if ( WSAStartup(MAKEWORD(2,2), &wsa_data) == SOCKET_ERROR ){ printf("WSAStartup() failed : %d\n", GetLastError()) ; return 1 ; } #endif /* WIN32 */ netlib_init(); set_defaults(); scan_cmd_line(argc,argv); if (debug) { dump_globals(); install_signal_catchers(); } if (debug) { printf("remotehost is %s and port %s\n",host_name,test_port); fflush(stdout); } establish_control(host_name,test_port,address_family, local_host_name,local_test_port,local_address_family); if (strcasecmp(test_name,"TCP_STREAM") == 0) { send_tcp_stream(host_name); } else if (strcasecmp(test_name,"TCP_MAERTS") == 0) { send_tcp_maerts(host_name); } #ifdef HAVE_ICSC_EXS else if (strcasecmp(test_name,"EXS_TCP_STREAM") == 0) { send_exs_tcp_stream(host_name); } #endif /* HAVE_ICSC_EXS */ #ifdef HAVE_SENDFILE else if (strcasecmp(test_name,"TCP_SENDFILE") == 0) { sendfile_tcp_stream(host_name); } #endif /* HAVE_SENDFILE */ else if (strcasecmp(test_name,"TCP_RR") == 0) { send_tcp_rr(host_name); } else if (strcasecmp(test_name,"TCP_CRR") == 0) { send_tcp_conn_rr(host_name); } else if (strcasecmp(test_name,"TCP_CC") == 0) { send_tcp_cc(host_name); } #ifdef DO_1644 else if (strcasecmp(test_name,"TCP_TRR") == 0) { send_tcp_tran_rr(host_name); } #endif /* DO_1644 */ #ifdef DO_NBRR else if (strcasecmp(test_name,"TCP_NBRR") == 0) { send_tcp_nbrr(host_name); } #endif /* DO_NBRR */ else if (strcasecmp(test_name,"UDP_STREAM") == 0) { send_udp_stream(host_name); } else if (strcasecmp(test_name,"UDP_RR") == 0) { send_udp_rr(host_name); } else if (strcasecmp(test_name,"LOC_CPU") == 0) { loc_cpu_rate(); } else if (strcasecmp(test_name,"REM_CPU") == 0) { rem_cpu_rate(); } #ifdef WANT_DLPI else if (strcasecmp(test_name,"DLCO_RR") == 0) { send_dlpi_co_rr(host_name); } else if (strcasecmp(test_name,"DLCL_RR") == 0) { send_dlpi_cl_rr(host_name); } else if (strcasecmp(test_name,"DLCO_STREAM") == 0) { send_dlpi_co_stream(host_name); } else if (strcasecmp(test_name,"DLCL_STREAM") == 0) { send_dlpi_cl_stream(host_name); } #endif /* WANT_DLPI */ #ifdef WANT_UNIX else if (strcasecmp(test_name,"STREAM_RR") == 0) { send_stream_rr(host_name); } else if (strcasecmp(test_name,"DG_RR") == 0) { send_dg_rr(host_name); } else if (strcasecmp(test_name,"STREAM_STREAM") == 0) { send_stream_stream(host_name); } else if (strcasecmp(test_name,"DG_STREAM") == 0) { send_dg_stream(host_name); } #endif /* WANT_UNIX */ #ifdef WANT_XTI else if (strcasecmp(test_name,"XTI_TCP_STREAM") == 0) { send_xti_tcp_stream(host_name); } else if (strcasecmp(test_name,"XTI_TCP_RR") == 0) { send_xti_tcp_rr(host_name); } else if (strcasecmp(test_name,"XTI_UDP_STREAM") == 0) { send_xti_udp_stream(host_name); } else if (strcasecmp(test_name,"XTI_UDP_RR") == 0) { send_xti_udp_rr(host_name); } #endif /* WANT_XTI */ #ifdef WANT_SCTP else if (strcasecmp(test_name, "SCTP_STREAM") == 0) { send_sctp_stream(host_name); } else if (strcasecmp(test_name, "SCTP_RR") == 0) { send_sctp_rr(host_name); } else if (strcasecmp(test_name, "SCTP_STREAM_MANY") == 0) { send_sctp_stream_1toMany(host_name); } else if (strcasecmp(test_name, "SCTP_RR_MANY") == 0) { send_sctp_stream_1toMany(host_name); } #endif #ifdef DO_DNS else if (strcasecmp(test_name,"DNS_RR") == 0) { send_dns_rr(host_name); } #endif /* DO_DNS */ else { printf("The test you requested is unknown to this netperf.\n"); printf("Please verify that you have the correct test name, \n"); printf("and that test family has been compiled into this netperf.\n"); exit(1); } shutdown_control(); #ifdef WIN32 /* Cleanup the winsock lib */ WSACleanup(); #endif 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; }