亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? cygwin環境編譯,saac登陸服務端,石器2最新代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    Lock_Init();	// Arminius 7.17 memory lock		UNlockM_Init();        if(readConfig( "acserv.cf" )<0){        log( "無法在當前目錄里讀取 acserv.cf .\n" );        exit(1);    }#ifdef _SASQL    sasql_init();#endif	    log( "讀取數據目錄\n" );    dbRead( dbdir );#ifdef	_FAMILY    log("讀取 家族莊園\n");    readFMSMemo(fmsmemodir);    log("讀取 家族留言\n");    readFMPoint(fmpointdir);    log("讀取 家族目錄\n");    readFamily(familydir);#endif    log( "準備 檔案目錄\n" );    prepareDirectories( chardir );    log( "準備 日志目錄\n" );    prepareDirectories( logdir );    log( "準備 郵件目錄\n" );    prepareDirectories( maildir );#ifdef _SLEEP_CHAR    prepareDirectories( sleepchardir );    log( "準備 睡眠檔案目錄\n" );#endif    /* 兇引勻化月丟□伙毛  心仇戈 */    if( readMail(maildir) < 0 ){        log( "不能初始化郵件\n" );        exit(1);		}    /* TCPSTRUCT 毛賡渝祭 */    {        int tcpr;        if( ( tcpr = tcpstruct_init( NULL , port , 0 ,						CHARDATASIZE * 16 * MAXCONNECTION , 1 /* DEBUG */ ) ) < 0 ){            log( "不能開啟TCP: %d\n", tcpr );            return 1;        }    }    saacproto_InitServer( netWrite , CHARDATASIZE );    {        struct sigaction s,os;                bzero( &s, sizeof(s));        s.sa_handler = sighandle;        s.sa_flags = SA_NOMASK;        sigaction( SIGTERM,  &s, &os );        bzero( &s, sizeof(s));        s.sa_handler = sighandle;        s.sa_flags = SA_NOMASK;        sigaction( SIGINT,  &s, &os );        bzero( &s, sizeof( s ));        s.sa_handler = SIG_IGN;        s.sa_flags = SA_NOMASK;        sigaction( SIGPIPE, &s, &os );    }#ifdef _AC_SEND_FM_PK		 // WON ADD 莊園對戰列表儲存在AC	load_fm_pk_list();#endif#ifdef _ACFMPK_LIST	FMPK_LoadList();#endif#ifdef _ALLDOMAN	LOAD_herolist();  // Syu ADD 排行榜NPC#endif		log( "服務端版本: <%s>\n" , SERVER_VERSION );		log( "服務端編譯完成時間: %s %s \n" , __DATE__ , __TIME__ );    log( "\n開始工作...\n" );    signal(SIGUSR1,sigusr1);	// Arminius 7.20 memory lock	int itime=0;	while(1){		itime++;		if(itime>cpuuse){			itime=0;			usleep(1);		}    int newti,i;    static time_t main_loop_time;				sys_time = time(NULL);		if( main_loop_time != sys_time){            main_loop_time = time(NULL);            counter1++;            counter2++;            counter3++;            counter4++;			//andy add 2002/06/20			UNlockM_UnlockPlayer();            // Nuke *1 1012            if( counter1 > Total_Charlist ){            		counter1=0;                char *c = ctime( &main_loop_time );                if( c ){                    struct timeval st,et;                    log( "\nTIME:%s\n",c );                    gettimeofday( &st,NULL);                    dbFlush(dbdir);                    gettimeofday( &et,NULL);                    log( "Flushed db(%fsec)\n", time_diff(et,st) );                    log( "檔案表列總數:%d NG:%d\n",                         total_ok_charlist, total_ng_charlist );                }            }            // Nuke **1 1012            //if( ( counter % 600 ) == 0 ){            if( counter2 > Expired_mail ){            		counter2=0;                struct timeval st,et;                gettimeofday( &st,NULL);                expireMail();                gettimeofday( &et,NULL);                log( "過期郵件(%fsec)\n", time_diff(et,st) );            }#ifdef	_FAMILY            //if ((counter % 300) == 0) // 300( -> 60)      if( counter4 > Write_Family ) // 300( -> 60)      {      	  counter4=0;         	struct timeval st, et;         	gettimeofday(&st, NULL);         	writeFamily(familydir);         	writeFMPoint(fmpointdir);         	writeFMSMemo(fmsmemodir);         	gettimeofday(&et, NULL);         	log("記錄家族(%fsec)\n", time_diff(et, st));      }#endif        }    newti = tcpstruct_accept1();    if( newti >= 0 ){			log( "同意: %d\n" , newti );			gs[newti].use = 1;    }        for(i=0;i<MAXCONNECTION;i++){//        	char buf[CHARDATASIZE * 16;            char buf[CHARDATASIZE];            int l;            l = tcpstruct_readline_chop( i , buf , sizeof( buf )- 1);						{                if( !gs[i].use )continue;                if( l > 0 ){									char debugfun[256];                    buf[l]=0;                    if( saacproto_ServerDispatchMessage( i , buf, debugfun)<0){                        // Nuke start                        tcpstruct_close(i);// avoid the shutdown the gmsv ttom                        log( "GMSV(%s) 消息:%s\n", gs[i].name, debugfun);                    }                } else if( l == TCPSTRUCT_ETOOLONG ){                    log( "很長:%d 服務器名::%s\n", i , gs[i].name );                    logout_game_server( i );                } else if( l < 0 ){                    log( "關閉:%d 服務器名:%s\n", i , gs[i].name );                    logout_game_server(i);                } else if( l == 0 ){                    ;                }            }        }        {            static struct timeval tv_loop_store ;            struct timeval now;            double dif;            gettimeofday( &now , NULL );            dif = time_diff( now, tv_loop_store );            if( dif > 0.5 ){ // CoolFish 0.1 -> 0.5 2001/5/19                //log( "Sl:%f" , dif );            }            tv_loop_store = now;        }        /* 伐□市□及正奶丞失它玄毛譬屯月[           正奶丞失它玄仄兇日夫弘毛分仄化伐□市□毛誚仄化仄引丹[           匹必□丞扔□田□卞  蔽讀卞反騷襞允月           */    }    return 0;       }doubletime_diff(struct timeval subtrahend,          struct timeval subtractor){    return( (subtrahend.tv_sec - subtractor.tv_sec)            + (subtrahend.tv_usec            - subtractor.tv_usec  ) / (double)1E6 );}/*  夫弘及夫□  □玄市它件玄毛  月[  云卅元凜渝及手及反允屯化及夫弘白央奶伙互云卅元卞卅月方丹卞允月[  仇及酷  反醒儂及瑕互云云仁卅月互}    匹奶件正□田伙毛  凳仄化手    暹屺分[   */int get_rotate_count(void ){    int a;    unsigned int t = (unsigned int ) time(NULL);            a = ( t / log_rotate_interval ) * log_rotate_interval;        return a;}static int findregBlankMemBuf( void );static int unregMemBuf( int index );static int findregBlankCon( void );static int getFreeMem( void );static int appendReadBuffer( int index, char *data, int len );static int appendWriteBuffer( int index , char *data, int len );static int appendMemBufList( int top, char *data, int len );static int consumeMemBufList( int top, char *out, int len, int flag, int copyflag );static int getLineReadBuffer( int index, char *buf, int len );int tcpstruct_init( char *addr , int p , int timeout_ms , int mem_use , int db ){    mbsize = mem_use / sizeof( struct membuf );    mbuse =0;    mb_finder = 0;    mb = ( struct membuf * ) calloc( 1, mbsize * sizeof(struct membuf ));    if( mb == NULL ) return TCPSTRUCT_ENOMEM;    bzero( mb , mbsize * sizeof( struct membuf ));    con = ( struct connection *) calloc( 1, MAXCONNECTION * sizeof( struct connection ));    if( con == NULL ){        free( mb );        return TCPSTRUCT_ENOMEM;    } else {        int i;        for(i=0;i<MAXCONNECTION;i++){            con[i].use = 0;            con[i].fd = -1;        }    }    select_timeout.tv_sec = timeout_ms / 1000;    select_timeout.tv_usec = (timeout_ms - ( timeout_ms/1000)*1000)*1000;    /* socket */    mainsockfd = socket( AF_INET , SOCK_STREAM ,  0 );    if( mainsockfd < 0 ) return TCPSTRUCT_ESOCK;        /* bind */    bzero( &localaddr ,sizeof( localaddr ));    localaddr.sin_family = AF_INET;    localaddr.sin_port = htons( p );        if( addr ){        localaddr.sin_addr.s_addr = inet_addr( addr );    } else {        localaddr.sin_addr.s_addr = htonl( INADDR_ANY );    }    if( bind( mainsockfd , (struct sockaddr*) &localaddr ,              sizeof( localaddr )) < 0 ) return TCPSTRUCT_EBIND;    /* listen */    if( listen( mainsockfd , BACKLOGNUM )<0) return TCPSTRUCT_ELISTEN;    return OK;}int tcpstruct_accept1( void ){    int tis[BACKLOGNUM];    int ret;    ret = tcpstruct_accept( tis , 1 );    if( ret < 0 ){        return ret;    } else if( ret == 1 ){        return tis[0];    } else {        return TCPSTRUCT_EBUG ;    }}int tcpstruct_accept( int *tis , int ticount ){  int i;  int sret = 0;  int accepted = 0;  struct timeval t;  fd_set rfds, wfds , efds;    FD_ZERO( & rfds );  FD_ZERO( & wfds );  FD_ZERO( & efds );        for(i=0;i<MAXCONNECTION;i++){   if( con[i].use &&      con[i].fd >= 0 && con[i].closed_by_remote ==0 ){      FD_SET( con[i].fd , & rfds );      FD_SET( con[i].fd , & wfds );      FD_SET( con[i].fd , & efds );              	    t = select_timeout;	    sret = select( con[i].fd+1, & rfds , (fd_set*)NULL, (fd_set*)NULL , &t);			if( sret > 0 ) {				if( ( con[i].fd >= 0 ) && FD_ISSET( con[i].fd , &rfds ) ){					int fr = getFreeMem( );					int rr , readsize ;					if( fr <= 0 ) continue;					if( fr > sizeof(tmpbuf ) ){						readsize = sizeof( tmpbuf);					} else {						readsize = fr;					}					rr = read( con[i].fd , tmpbuf , readsize );					if( rr <= 0 ){						con[i].closed_by_remote = 1;					} else {						appendReadBuffer( i , tmpbuf , rr );#ifdef _DEBUG						printf("讀取內容:%s\n",tmpbuf);#endif					}				}			}		    t = select_timeout;    	    sret = select( con[i].fd+1, (fd_set*)NULL, &wfds, (fd_set*)NULL , &t);			if( sret > 0 ) {				if( ( con[i].fd >= 0 ) && FD_ISSET( con[i].fd , &wfds )){					char send_buf[4096];					memset( send_buf, 0, sizeof( send_buf));					int l = consumeMemBufList( con[i].mbtop_wi ,send_buf, sizeof(send_buf),0 , 1 );					if(l>0){						int rr = write( con[i].fd , send_buf , l );						if( rr < 0 ){							con[i].closed_by_remote = 1;						} else {#ifdef _DEBUG							printf("發送內容:%s\n",send_buf);#endif							consumeMemBufList( con[i].mbtop_wi , send_buf, l, 1 , 0 );						}					}				}			}		}	}  for( i=0; i<ticount; i++){    int asret;    struct timeval t;    t.tv_sec =0;    t.tv_usec =0;    FD_ZERO( & rfds );    FD_ZERO( & wfds );	  FD_ZERO( & efds );	  FD_SET( mainsockfd , & rfds );    FD_SET( mainsockfd , & wfds );    FD_SET( mainsockfd , & efds );    asret = select( mainsockfd+1, &rfds , &wfds , (fd_set*)NULL, &t );		// Nuke 20040610: add asret>0 to avoid signal interrupt in select    if( (asret>0) && FD_ISSET( mainsockfd , & rfds )){      struct sockaddr_in c;      int len , newsockfd;      int newcon;      bzero( &c , sizeof( c ));      len = sizeof( c );      fprintf( stderr, "允許 " );      newcon = findregBlankCon( );      if( newcon < 0 ) continue;        newsockfd = accept( mainsockfd, (struct sockaddr*)&c , &len );        log( "同意: %d\n" , newsockfd );        if( newsockfd < 0 ){          unregMemBuf( newcon );          continue;        }        set_nodelay( newsockfd );        con[newcon].fd = newsockfd;        memcpy( &con[newcon].remoteaddr , &c ,sizeof(c));        tis[accepted] = newcon;        accepted ++;     }   }   return accepted;}int tcpstruct_close( int ti ){    if( ti < 0 || ti >= MAXCONNECTION )return TCPSTRUCT_EINVCIND;    if( con[ti].use == 0 ){        return TCPSTRUCT_ECLOSEAGAIN;    }    close( con[ti].fd );    con[ti].use = 0;    con[ti].fd = -1;    /* 伉旦玄毛兇升勻化蟈  毛弁伉失允月 */    consumeMemBufList( con[ti].mbtop_ri , NULL,                   mbsize * sizeof( mb[0].buf ), 1, 0 );    consumeMemBufList( con[ti].mbtop_wi , NULL,                   mbsize * sizeof( mb[0].buf ), 1, 0 );    unregMemBuf( con[ti].mbtop_ri );    unregMemBuf( con[ti].mbtop_wi );    con[ti].mbtop_ri = -1;    con[ti].mbtop_wi = -1;        return OK;}/*    心仇戈手及互手丹卅仁化}仄井手 remoteclose 分勻兇日 -1 毛井尹允

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人ar影院免费观看视频| 91麻豆福利精品推荐| 7799精品视频| 午夜精品福利一区二区三区蜜桃| 色综合久久中文字幕| 亚洲一区二区在线视频| 欧美日韩精品二区第二页| 天天做天天摸天天爽国产一区| 欧美肥妇毛茸茸| 国产综合久久久久久鬼色| 久久精品夜夜夜夜久久| 99精品视频一区二区| 亚洲图片欧美视频| 91精品国产综合久久蜜臀| 精品一二三四区| 国产精品萝li| 欧美精品在线观看播放| 精品一区二区三区影院在线午夜| 久久精品人人做| 日本道免费精品一区二区三区| 无码av中文一区二区三区桃花岛| 精品欧美一区二区久久| 国产91综合网| 亚洲v日本v欧美v久久精品| 精品福利在线导航| 99精品视频在线观看| 久久精品国产精品亚洲综合| 国产精品免费丝袜| 欧美一区二区三区在线观看视频 | 婷婷久久综合九色综合伊人色| 日韩一区二区不卡| 99精品欧美一区| 美女任你摸久久| 成人免费小视频| 欧美一区二区三区日韩视频| 国产成人午夜视频| 亚洲高清免费一级二级三级| 国产婷婷色一区二区三区在线| 欧洲一区在线电影| 成人一区二区在线观看| 日韩av中文字幕一区二区三区| 中文子幕无线码一区tr| 欧美一区二区人人喊爽| 91麻豆成人久久精品二区三区| 加勒比av一区二区| 亚洲综合一区二区| 久久久午夜精品| 日韩视频在线永久播放| 91成人免费在线视频| 丁香一区二区三区| 麻豆高清免费国产一区| 亚洲成人av中文| 亚洲精品写真福利| 国产精品久久看| 久久众筹精品私拍模特| 91浏览器入口在线观看| 亚洲第一成人在线| 亚洲视频电影在线| 久久亚洲一区二区三区四区| 欧美性大战久久久| 成人性生交大合| 久久er99精品| 日本亚洲一区二区| 午夜伦理一区二区| 亚洲精品成人在线| 国产农村妇女精品| 欧美videofree性高清杂交| 在线观看一区日韩| jlzzjlzz欧美大全| 国产精品77777| 久久国产夜色精品鲁鲁99| 久久久久国产精品麻豆ai换脸 | 亚洲色图.com| 欧洲另类一二三四区| 成人污视频在线观看| 国产一区二区三区最好精华液| 亚洲国产sm捆绑调教视频 | 一区二区三区四区在线| 中文在线资源观看网站视频免费不卡| www日韩大片| 久久亚洲捆绑美女| 日韩精品一区二区三区三区免费 | 日韩色在线观看| 成人免费看黄yyy456| 韩国欧美国产1区| 免费高清在线视频一区·| 亚洲国产你懂的| 亚洲一区在线看| 国产精品福利一区二区三区| 久久香蕉国产线看观看99| 精品国产制服丝袜高跟| 在线免费不卡视频| 日本道在线观看一区二区| 一本到三区不卡视频| av资源网一区| 99re热这里只有精品视频| 99久久婷婷国产综合精品电影| 成人精品一区二区三区四区| 成人国产亚洲欧美成人综合网| 久久国产精品区| 成人午夜免费av| 色狠狠av一区二区三区| 在线观看视频一区二区欧美日韩| 91啪亚洲精品| 欧美日韩一区视频| 7777精品伊人久久久大香线蕉| 欧美高清hd18日本| 欧美性大战xxxxx久久久| 日韩一区二区精品在线观看| 精品国产一区二区精华| 久久亚洲精华国产精华液 | 国产日韩欧美精品综合| 26uuu亚洲| 中文字幕一区二区三区av| 亚洲丝袜精品丝袜在线| 亚洲自拍偷拍av| 日韩va欧美va亚洲va久久| 亚洲国产一区二区视频| 精品一二三四区| 99re成人精品视频| 9191成人精品久久| 国产日韩欧美制服另类| 一区二区三区中文字幕精品精品| 亚洲不卡av一区二区三区| 日韩有码一区二区三区| 成人国产电影网| 欧美日韩国产在线播放网站| www欧美成人18+| 亚洲一区二区成人在线观看| 免费欧美在线视频| 国产白丝精品91爽爽久久| 欧美唯美清纯偷拍| 欧美mv日韩mv国产网站| 亚洲一级电影视频| 国产丶欧美丶日本不卡视频| 在线视频欧美精品| 精品国产乱码久久久久久图片| 亚洲色图在线看| 国产一区二区三区四区五区入口 | 精品一区二区三区欧美| 在线精品视频免费播放| 国产亚洲综合色| 五月婷婷综合在线| jizzjizzjizz欧美| 日韩一区二区在线看| 国产精品久久久久久妇女6080| 蜜臀久久99精品久久久画质超高清| 久久精品国产99| 日本久久精品电影| 国产日韩欧美综合在线| 日日噜噜夜夜狠狠视频欧美人| 国产成人亚洲综合a∨猫咪| 在线成人av影院| 亚洲男人的天堂一区二区| 国产一区二区女| 欧美精品一级二级三级| 亚洲午夜久久久久久久久久久| 国产99久久久国产精品潘金| 欧美v日韩v国产v| 亚洲成a人v欧美综合天堂下载| 波多野结衣欧美| 久久精品网站免费观看| 亚洲国产日韩综合久久精品| 国产成人免费视频网站高清观看视频| 欧美丰满少妇xxxxx高潮对白| 一区二区三区自拍| 91免费小视频| 日韩伦理免费电影| 成人白浆超碰人人人人| 欧美日韩视频第一区| 亚洲第一主播视频| 欧美唯美清纯偷拍| 亚洲一区二区在线播放相泽| eeuss鲁片一区二区三区在线观看| 精品精品欲导航| 日本午夜精品一区二区三区电影| 91亚洲精品乱码久久久久久蜜桃 | 精品美女一区二区三区| 天天综合日日夜夜精品| 欧美优质美女网站| 亚洲一区二区视频在线| 在线一区二区三区| 一区二区三区在线观看网站| 国产一区在线观看视频| 国产精品情趣视频| 丁香网亚洲国际| 综合中文字幕亚洲| 99国产精品久久久久久久久久久| 国产精品国产三级国产aⅴ入口 | 91丨porny丨首页| 国产精品久久福利| 91视频在线看| 亚洲一区在线电影| 制服丝袜国产精品| 精品在线亚洲视频| 日本一区二区三级电影在线观看| 国产麻豆精品视频| 亚洲一区二区美女| 欧美第一区第二区| 丁香激情综合五月|