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

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

?? main.c.bak

?? cygwin環境編譯,saac登陸服務端,石器2最新代碼
?? BAK
?? 第 1 頁 / 共 3 頁
字號:
   */int tcpstruct_read( int ti , char *buf , int len ){    int l;    if( ti < 0 || ti >= MAXCONNECTION || con[ti].use == 0 )        return TCPSTRUCT_EINVCIND;    l = consumeMemBufList( con[ti].mbtop_ri , buf , len , 1 , 1);    if( l == 0  && con[ti].closed_by_remote ) return TCPSTRUCT_EREADFIN;    return l;}/*  1墊毛方心仇戈[  int kend : 1卅日墊  及 \n 毛誚允  int kend_r : 1卅日墊  及 \r 手誚允(丐木壬)    心仇戈手及互手丹卅仁化}井勾 remote closed 分勻兇日-1毛井尹允  // Nuke	Read 1 line	if kend==1 then delete \n at the tail	if kend_r== 1 then delete \r at the tail (if any)	if no data read, it means 'remote closed' then return -1 */int tcpstruct_readline( int ti , char *buf , int len , int kend , int kend_r ){    int l;    int minus = 0;    if( ti < 0 || ti >= MAXCONNECTION || con[ti].use == 0 )        return TCPSTRUCT_EINVCIND;    l = getLineReadBuffer( ti , buf , len );    if( l == 0 ){        if( con[ti].closed_by_remote ){            return TCPSTRUCT_EREADFIN;        } else {            return 0;        }    }        if( kend ){        if( buf[l-1]=='\n' ){            buf[l-1] = 0; minus =-1;        }    }    if( kend_r ){        if( buf[l-1]=='\r' ){            buf[l-1] = 0; minus = -1;        }        if( buf[l-2]=='\r' ){            buf[l-2] = 0; minus = -2;        }    }    return l + minus;}int tcpstruct_readline_chop( int ti , char *buf, int len ){    return tcpstruct_readline( ti , buf , len , 1,1);}int tcpstruct_write( int ti , char *buf , int len ){    if( ti < 0 || ti >= MAXCONNECTION || con[ti].use == 0 )        return TCPSTRUCT_EINVCIND;        return appendWriteBuffer( ti , buf , len );}int tcpstruct_connect( char *addr , int port ){    int newti ;    int s, r;    struct sockaddr_in svaddr;    struct hostent *he;        s = socket( AF_INET, SOCK_STREAM , 0 );    if(s<0)return -2;    bzero( &svaddr , sizeof( svaddr ));    svaddr.sin_family = AF_INET;    svaddr.sin_port = htons( port );    if( inet_aton( addr, &svaddr.sin_addr ) == 0 ){        he = gethostbyname( addr );        if( he == NULL ){            return TCPSTRUCT_EHOST;        }        memcpy( & svaddr.sin_addr.s_addr , he->h_addr ,                sizeof( struct in_addr));    }    r = connect( s , ( struct sockaddr*)&svaddr,sizeof(svaddr));    if( r < 0 ){        return TCPSTRUCT_ECONNECT;    }    set_nodelay( s );    newti = findregBlankCon( );    if( newti < 0 ){        fprintf( stderr , "連接失敗: newti:%d\n", newti );        return TCPSTRUCT_ECFULL;    }    con[newti].fd = s;    memcpy( & con[newti].remoteaddr , &svaddr ,            sizeof( struct sockaddr_in));    return newti;}static int appendReadBuffer(  int index , char *data , int len ){    int top;    top = con[index].mbtop_ri;    for(;;){        int nextind = mb[top].next;        if( nextind == -1 ) break;        top = nextind;    }    return appendMemBufList( top , data , len );}static int appendWriteBuffer( int index , char *data , int len ){    int top;    top = con[index].mbtop_wi;    for(;;){        int nextind = mb[top].next;        if( nextind == -1 ) break;        top = nextind;    }    return appendMemBufList( top , data , len );}static int appendMemBufList( int top , char *data , int len ){    int fr = getFreeMem( );    int rest = len;    int data_topaddr = 0;        if( len >= fr ){		FILE *fp;		if( (fp=fopen( "badsysinfo.txt", "a+")) != NULL ){			fprintf( fp, "appendMemBufList() len:%d / fr:%d err !! \n", len, fr);			fclose( fp);		}		//andy_log		log( "appendMemBufList() len:%d / fr:%d err !! \n", len, fr);        return -1;    }	data[len] = 0;    for(;;){        int blanksize = sizeof( mb[0].buf ) - mb[top].len;        int cpsize = ( rest <= blanksize ) ? rest : blanksize;        memcpy( mb[top].buf + mb[top].len ,                data + data_topaddr , cpsize );        mb[top].len += cpsize;        if( rest <= blanksize ){            return len;        } else {            int newmb;            rest -= cpsize;            data_topaddr += cpsize;            if( (newmb = findregBlankMemBuf( ) ) == TCPSTRUCT_EMBFULL ){				FILE *fp;				if( (fp=fopen( "badsysinfo.txt", "a+")) != NULL ){					fprintf( fp, "find newmb == TCPSTRUCT_EMBFULL err data:%s !!\n", data);					fclose( fp);				}				log( "find newmb == TCPSTRUCT_EMBFULL err data:%s !!\n", data);			}            mb[top].next = newmb;            top = mb[top].next;        }    }    return TCPSTRUCT_EBUG;}static int consumeMemBufList( int top , char *out , int len ,                          int consumeflag , int copyflag ){    int total = 0;    int top_store = top;    for(;;){        int cpsize;        if( top == -1 ) break;        cpsize = ( mb[top].len <= ( len - total) ) ?            mb[top].len : ( len - total );        if( copyflag ) memcpy( out + total , mb[top].buf , cpsize );        total += cpsize;        if( consumeflag ){            mb[top].len -= cpsize;            if( mb[top].len > 0 ){                /* 勾井中反兇仄化卅中及匹memmove */                memmove( mb[top].buf , mb[top].buf + cpsize ,                         sizeof( mb[top].buf ) - cpsize );            }        }        top = mb[top].next;        if( total == len ){            break;        }    }    if( consumeflag ){        /* 卅互今互0卞卅勻化月卅日荸  [匹手  賡及支勾反荸  仄卅中冗 */        top = mb[top_store].next;        for(;;){            if( top == -1 )break;            if( mb[top].len == 0 ){                int prev;                mb[top_store].next = mb[top].next;                prev = top;                top = mb[top].next;                unregMemBuf( prev );            } else {                top = mb[top].next;            }        }    }        return total;}static int getLineReadBuffer( int index , char *buf, int len ){    int top = con[index].mbtop_ri;    int ti = 0 , breakflag = 0;    for(;;){        int i;                int l = mb[top].len;        if( top == -1 )break;        for( i=0 ; i < l ; i++){            if( mb[top].buf[i] == '\n' ){                breakflag = 1;                break;            }            ti ++;        }        if( breakflag )break;        top = mb[top].next;    }    if( ti > len ){        /* 1墊互卅互允亢月[    卅巨仿□毛井尹六 */        return TCPSTRUCT_ETOOLONG;    }    /* 墊互敦岳仄化卅中 */    if( breakflag == 0 ){        return 0;    }    return consumeMemBufList( con[index].mbtop_ri , buf , ti+1 , 1 , 1 );}/*    心仇戶月    贏今毛忒允  int index : con index  return:    反巨仿□  0動曉及樺寧反 read 仄化手方中贏今[  mbsize 井日mbuse 毛婁中化扔奶術毛井仃月分仃[  仇引井中芴曰及坌反  骰允月[公氏卅稱井中襖卞仇分歹日卅仁化手第[   */   static int getFreeMem( void ){    return ( mbsize - mbuse ) * sizeof( mb[0].buf );}/*    membuf 及塢五毛繭仄分允[  return : 心勾井勻兇日 >=0 匹 index.  心勾井日卅井勻兇日    腹綢及午五卞反 mb_finder 毛勾井丹[  仇木匹腹綢仄化}    卞reg允月[ */static int findregBlankMemBuf( void  ){    int i;    for(i=0;i<mbsize;i++){        mb_finder ++;        if( mb_finder >= mbsize || mb_finder < 0 ) mb_finder = 0;        if( mb[mb_finder].use == 0 ){            mb[mb_finder].use = 1;            mb[mb_finder].len = 0;            mb[mb_finder].next = -1;            mbuse ++;            return mb_finder;        }    }    return TCPSTRUCT_EMBFULL;}/*  mb 毛荸  允月   */static int unregMemBuf(  int index ){    mb[index].use=0;    mb[index].next = -1;    mb[index].len = 0;    mbuse --;    return OK;}static int findregBlankCon( void ){    int i;		// Nuke changed 0->1		//for(i=0;i<MAXCONNECTION;i++){    for(i=1;i<MAXCONNECTION;i++){        if( con[i].use == 0 ){            con[i].use = 1;            con[i].fd = -1;            con[i].mbtop_ri = findregBlankMemBuf();            if( con[i].mbtop_ri < 0 ){                fprintf( stderr , "EMBFULL\n" );                return TCPSTRUCT_EMBFULL;            }                        con[i].mbtop_wi = findregBlankMemBuf();            if( con[i].mbtop_wi < 0 ){                unregMemBuf( con[i].mbtop_ri );                fprintf( stderr , "EMBFULL\n" );                return TCPSTRUCT_EMBFULL;            }            bzero( & con[i].remoteaddr , sizeof( struct sockaddr_in));            con[i].closed_by_remote = 0;            return i;        }    }    return TCPSTRUCT_ECFULL;}int tcpstruct_countmbuse( void ){    int i,c=0;    for(i=0;i<mbsize;i++){        if( mb[i].use )c++;    }    return c;}char * getGSName( int i ){    return gs[i].name;}void checkGSUCheck( char *id ){    int i;    char gname[256];    if(!id[0])	return;	memset( gname, 0,  sizeof( gname) );	if( LockNode_getGname( (getHash(id) & 0xff), id, gname) <= 0 ){		log("無法從游戲中找到賬號:%x/%s !!\n", getHash( id), id);		return;	}	log("\n");    for(i=0; i < MAXCONNECTION; i++ ){        if( gs[i].name[0] && strcmp( gs[i].name , gname )==0){          log("發送解鎖檢查[%s] 到 %d.%x/%s 服務器:%d !!\n", id, i, getHash( id), gname, gs[i].fd);					saacproto_ACUCheck_send( gs[i].fd , id );					return;        }    }//	log("Can't find gname:%s sending err !!\n", gname);	int ret = -1;		if( !isLocked( id) ) {			log( "刪除內存信息: 用戶:%x/%s 沒有鎖定!!\n", getHash(id), id);		}		if( DeleteMemLock( getHash(id) & 0xff, id, &ret) ) {		} else {			log( "不能解鎖 %x:%s !\n", getHash(id), id);		}}void set_nodelay( int sock ){    int flag = 1;    int result = setsockopt( sock, IPPROTO_TCP, TCP_NODELAY,                             (char*)&flag, sizeof(int));    if( result < 0 ){        log( "不能設置延遲.\n" );    } else {        log( "設置延遲: fd:%d\n", sock );    }}/*  允屯化及必□丞扔□田□卞  霜[  int flag : 1分勻兇日霜耨葭卞反云仁日卅中   */void gmsvBroadcast( int fd, char *p1, char *p2, char *p3 , int flag ){    int i,c=0;        for(i=0;i<MAXCONNECTION;i++){        if( ( flag == 1 ) && ( i == fd ) )continue;        if( gs[i].use && gs[i].name[0] ){            saacproto_Broadcast_send( i, p1,p2,p3);            c++;        }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性xxxxxxxx| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品一区二区视频| 99精品欧美一区| 欧美精品在线观看一区二区| 欧美不卡一二三| 亚洲色图欧美偷拍| 久久99精品国产麻豆婷婷洗澡| 99久久精品情趣| 精品久久久久一区| 亚洲图片欧美一区| jlzzjlzz欧美大全| 久久久精品黄色| 琪琪久久久久日韩精品| 欧美午夜视频网站| 亚洲少妇中出一区| 国产69精品久久99不卡| 欧美一级在线免费| 亚洲精品欧美激情| 成人精品高清在线| 久久久久久黄色| 日本欧美肥老太交大片| 色中色一区二区| 久久久亚洲国产美女国产盗摄| 视频一区视频二区在线观看| 在线一区二区视频| 亚洲一区二区三区视频在线| 色噜噜久久综合| 亚洲美女精品一区| 91丨porny丨国产入口| 国产精品国产精品国产专区不蜜 | 宅男噜噜噜66一区二区66| 亚洲狠狠爱一区二区三区| 97久久超碰国产精品| 日韩毛片视频在线看| 97se亚洲国产综合自在线不卡| 国产精品美日韩| 成人免费精品视频| 日韩理论电影院| 91尤物视频在线观看| 亚洲人123区| 色婷婷av一区| 亚洲高清视频中文字幕| 欧美亚洲图片小说| 奇米色一区二区| 日韩免费电影一区| 国产一区二区视频在线播放| 日本一区二区三区国色天香| 成人av免费网站| 亚洲精品成人在线| 91精品一区二区三区久久久久久| 日本亚洲电影天堂| 久久精品一区二区| 99精品欧美一区二区三区小说 | 青青草97国产精品免费观看无弹窗版 | 国产一区在线精品| 国产精品国产三级国产普通话99| 91精品福利视频| 日韩精品午夜视频| 国产亚洲欧美一区在线观看| av电影在线观看不卡| 石原莉奈在线亚洲二区| 国产欧美中文在线| 欧美色中文字幕| 麻豆精品在线看| 中文字幕中文字幕在线一区 | 久久久蜜桃精品| 91亚洲国产成人精品一区二三 | 日韩免费观看高清完整版在线观看| 狠狠色综合色综合网络| 亚洲欧美乱综合| 精品嫩草影院久久| 色欧美日韩亚洲| 麻豆国产精品视频| 一区二区三区.www| 久久综合狠狠综合久久综合88| 91视视频在线观看入口直接观看www| 日韩黄色免费网站| 国产精品久久久久9999吃药| 日韩视频国产视频| 91极品视觉盛宴| 粉嫩av一区二区三区在线播放| 亚洲成人精品一区| 中文字幕 久热精品 视频在线| 欧美日韩一区二区三区视频| 丁香天五香天堂综合| 亚洲大尺度视频在线观看| 欧美激情在线看| 日韩精品中文字幕在线一区| 一本久久a久久精品亚洲| 韩国av一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | 国产精品 欧美精品| 日韩福利电影在线观看| 亚洲女女做受ⅹxx高潮| 久久久久99精品一区| 日韩片之四级片| 欧美日韩你懂得| 欧美自拍偷拍一区| 99精品久久只有精品| va亚洲va日韩不卡在线观看| 国产毛片精品视频| 成人av在线电影| 国产成人自拍网| 国产一区中文字幕| 国产一区二区主播在线| 精品亚洲国内自在自线福利| 日韩av中文字幕一区二区三区| 一区二区在线看| 一区二区三区日本| 又紧又大又爽精品一区二区| 亚洲欧美韩国综合色| 中文字幕亚洲电影| 亚洲欧美在线另类| 日韩久久一区二区| 亚洲精品视频观看| 亚洲一区二区高清| 亚洲第一会所有码转帖| 亚洲成在人线在线播放| 五月天激情综合| 日本不卡视频在线| 精品一区二区三区av| 国精品**一区二区三区在线蜜桃| 美国十次了思思久久精品导航| 久久国产精品露脸对白| 国产精品一品视频| 成人午夜伦理影院| 色婷婷国产精品久久包臀| 欧美色涩在线第一页| 欧美一区二区三区视频在线 | 99久久99久久精品免费看蜜桃| 成人黄页在线观看| 色婷婷久久99综合精品jk白丝| 欧美性感一区二区三区| 欧美日韩国产一区二区三区地区| 91精品黄色片免费大全| 久久久亚洲午夜电影| 国产精品网友自拍| 亚洲成人av电影在线| 久久99在线观看| 成人aa视频在线观看| 91国偷自产一区二区三区观看| 欧美日韩小视频| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品色哟哟| 亚洲一级二级三级在线免费观看| 蜜桃精品视频在线观看| 成人黄色电影在线 | 亚洲国产成人tv| 激情久久久久久久久久久久久久久久| 成人免费视频国产在线观看| 欧洲亚洲精品在线| 精品久久久久久无| 亚洲蜜桃精久久久久久久| 裸体一区二区三区| 色一区在线观看| 2023国产精华国产精品| 亚洲一二三区在线观看| 国产黄色成人av| 欧美日韩一级视频| 天天影视色香欲综合网老头| 欧美高清在线一区| 国产精品欧美一级免费| 婷婷成人激情在线网| 99在线精品免费| 精品国产亚洲在线| 亚洲国产你懂的| 北岛玲一区二区三区四区| 日韩视频免费直播| 亚洲一区二区欧美日韩| www.一区二区| 久久亚洲精品小早川怜子| 午夜不卡av免费| 99精品久久久久久| 久久精品视频一区| 蜜芽一区二区三区| 色婷婷久久99综合精品jk白丝 | 国产一区二区伦理| 欧美日韩国产色站一区二区三区| 中文字幕不卡一区| 国产一区二区三区精品视频| 欧美美女一区二区三区| 亚洲美女精品一区| av电影在线观看完整版一区二区| 欧美一区二区三级| 亚洲香蕉伊在人在线观| 一道本成人在线| 中文字幕在线不卡| 成人夜色视频网站在线观看| 2024国产精品| 国产一区在线精品| 久久久精品蜜桃| 国产一区二区女| 久久久国际精品| 国产一区二区看久久| 久久久久久久久久电影| 国产传媒久久文化传媒| 久久精品在这里| 国产成人a级片| 日本一区二区三区免费乱视频|