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

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

?? main.c.bak

?? cygwin環境編譯,saac登陸服務端,石器2最新代碼
?? BAK
?? 第 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一区二区三区免费野_久草精品视频
另类综合日韩欧美亚洲| 国产欧美一区二区三区在线老狼| 美女性感视频久久| 欧美手机在线视频| 欧美一区二区三区喷汁尤物| 精品一区二区三区日韩| 1024成人网| 国产精品国产三级国产普通话三级 | 欧美日韩一区中文字幕| 色吧成人激情小说| 欧美视频一区二| 欧美一区二区三区白人| 91精品国产一区二区人妖| 日韩欧美亚洲国产精品字幕久久久| 69堂成人精品免费视频| 精品福利二区三区| 国产日韩欧美a| 综合久久久久久久| 亚洲国产精品久久人人爱| 日韩不卡一区二区三区| 美女视频黄免费的久久 | 伊人夜夜躁av伊人久久| 一区二区在线电影| 日韩中文字幕区一区有砖一区| 日韩av中文字幕一区二区三区| 美女网站在线免费欧美精品| 韩国三级电影一区二区| 蜜臀久久久久久久| 色综合天天综合网天天狠天天| 99久久免费精品高清特色大片| 99久久亚洲一区二区三区青草| 色噜噜狠狠色综合欧洲selulu| 欧美日本一区二区三区| 久久午夜免费电影| ●精品国产综合乱码久久久久| 亚洲bdsm女犯bdsm网站| 国产成人av在线影院| 欧美日韩中文字幕一区| 久久九九久久九九| 爽好久久久欧美精品| 国产ts人妖一区二区| 欧美日本一区二区| 成人免费在线播放视频| 秋霞电影网一区二区| 91老师国产黑色丝袜在线| 欧美一区2区视频在线观看| 国产精品国模大尺度视频| 日韩中文字幕av电影| 波多野结衣中文字幕一区| 日韩午夜激情电影| 一区二区三区 在线观看视频| 精品一区二区三区视频在线观看| 91福利国产成人精品照片| 久久免费午夜影院| 亚洲成人777| 色综合天天综合狠狠| 久久蜜臀精品av| 蜜臀av一区二区在线免费观看| 色综合天天综合网天天看片| 国产色一区二区| 久久狠狠亚洲综合| 欧美色精品天天在线观看视频| 国产日产欧美精品一区二区三区| 亚洲国产综合在线| 91在线看国产| 亚洲国产成人一区二区三区| 久久精品国产99| 日韩一级精品视频在线观看| 亚洲一区二区三区国产| 色哟哟在线观看一区二区三区| 久久久久久影视| 狠狠色丁香九九婷婷综合五月| 7777精品伊人久久久大香线蕉最新版| 亚洲人成在线观看一区二区| 成人性视频免费网站| 久久久久久久久岛国免费| 韩日精品视频一区| 亚洲精品在线观看视频| 久久99精品国产麻豆婷婷| 4hu四虎永久在线影院成人| 五月婷婷色综合| 国产精品欧美一级免费| 国产精品一卡二卡在线观看| 欧美成人午夜电影| 狠狠色狠狠色综合| 国产婷婷色一区二区三区 | 国产精品美女久久久久av爽李琼| 国产一区二区三区免费在线观看| 精品久久久久久久人人人人传媒| 精品中文av资源站在线观看| 国产日韩欧美精品一区| 99视频有精品| 亚洲国产视频一区| 91精品国产综合久久精品图片| 欧美aa在线视频| 欧美精品一区二区三区在线| 韩国精品主播一区二区在线观看 | 日日夜夜精品视频天天综合网| 日韩视频在线观看一区二区| 精品影视av免费| 中文字幕精品综合| 欧美色视频一区| 国产真实乱子伦精品视频| 国产精品狼人久久影院观看方式| 99久久久国产精品| 婷婷综合另类小说色区| 久久久综合激的五月天| av在线播放成人| 亚洲福利国产精品| 久久亚洲免费视频| 欧美自拍丝袜亚洲| 国产一区视频网站| 亚洲男人天堂一区| 精品动漫一区二区三区在线观看| 成人精品国产免费网站| 亚洲国产精品天堂| 国产女主播在线一区二区| 在线一区二区三区| 精品在线免费视频| 亚洲午夜精品网| 国产日韩精品一区二区三区| 欧美日韩一区二区在线观看| 国产在线视频一区二区| 亚洲成av人片一区二区梦乃| 亚洲国产精品t66y| 欧美一二三区精品| 欧日韩精品视频| thepron国产精品| 麻豆视频观看网址久久| 亚洲男人天堂一区| 中文字幕不卡一区| 欧美成人a∨高清免费观看| 欧美视频一区二区三区在线观看| 成人国产电影网| 国产风韵犹存在线视精品| 免费观看91视频大全| 亚洲午夜三级在线| 中文字幕一区二| 国产欧美中文在线| 欧美精品一区二区三区高清aⅴ | 香蕉成人啪国产精品视频综合网| 中文字幕av在线一区二区三区| 精品av综合导航| 欧美一区二区三区婷婷月色| 欧美亚男人的天堂| 色悠悠久久综合| 91免费国产视频网站| av福利精品导航| 成人一区二区视频| 国产激情91久久精品导航| 老鸭窝一区二区久久精品| 丝袜美腿高跟呻吟高潮一区| 亚洲高清久久久| 日韩中文字幕不卡| 视频一区中文字幕| 日本少妇一区二区| 日本系列欧美系列| 久久99国产乱子伦精品免费| 韩国成人精品a∨在线观看| 精品一区二区三区视频在线观看| 免费久久99精品国产| 韩国女主播一区二区三区| 国产黄色精品视频| av电影一区二区| 欧美在线观看视频一区二区三区| 欧美亚洲尤物久久| 欧美一区二区大片| 精品国产一二三区| 欧美国产一区二区在线观看| 国产精品美女一区二区在线观看| 国产精品欧美久久久久一区二区| 综合久久久久久| 日韩在线一区二区三区| 麻豆免费精品视频| 丁香婷婷深情五月亚洲| 色8久久人人97超碰香蕉987| 欧美精品vⅰdeose4hd| 精品国产凹凸成av人网站| 国产婷婷一区二区| 亚洲午夜在线观看视频在线| 麻豆精品久久精品色综合| 成人免费高清在线| 在线观看91精品国产入口| 日韩你懂的在线播放| 国产精品麻豆99久久久久久| 亚洲一级二级在线| 卡一卡二国产精品 | 欧美日韩一区 二区 三区 久久精品| 欧美日韩一二三区| 久久久久久久久久久久久女国产乱| 国产精品国产三级国产三级人妇 | 日韩精品一区国产麻豆| 国产精品乱人伦中文| 亚洲成年人网站在线观看| 国产成人在线看| 欧美自拍偷拍一区| 国产精品麻豆一区二区| 日韩精品色哟哟| 99久久免费视频.com| 26uuu国产电影一区二区|