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

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

?? tcpip_util.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
字號:
#include "version.h"#include "main.h"#include "tcpip_util.h"#ifdef _TCPIP_UTILstruct connection *tcpcon;struct membuf *mems=NULL;static int me_find=0;static int tpsockfd1=-1;int mesize;int meuse;char tmpbuf[65536];#define BACKLOGNUM 5struct timeval select_timeout;struct sockaddr_in localaddr;int MEMBUF_InitSize( int mem_use, int db ){	mesize = mem_use / sizeof( struct membuf );    meuse = 0;    me_find = 0;	mems = ( struct membuf * ) calloc( 1, mesize * sizeof(struct membuf ));	if( mems == NULL ) return TCPSTRUCT_ENOMEM;	bzero( mems , mesize * sizeof( struct membuf ));    tcpcon = ( struct connection *) calloc( 1, MAXTCPCONNECTION * sizeof( struct connection ));    if( tcpcon == NULL ){        free( mems );        return TCPSTRUCT_ENOMEM;    } else {        int i;        for( i=0; i<MAXTCPCONNECTION; i++){            tcpcon[i].use = 0;            tcpcon[i].fd = -1;        }    }	return OK;}int MEMBUF_unregMemBuf(  int ti ){    mems[ti].use=0;    mems[ti].next = -1;    mems[ti].len = 0;    meuse --;    return OK;}int MEMBUF_findregBlankMemBuf( void  ){    int i;    for( i=0; i<mesize; i++){        me_find ++;        if( me_find >= mesize || me_find < 0 )			me_find = 0;        if( mems[me_find].use == 0 ){            mems[me_find].use = 1;            mems[me_find].len = 0;            mems[me_find].next = -1;            meuse ++;            return me_find;        }    }    return TCPSTRUCT_EMBFULL;}int MEMBUF_findregBlankCon( void ){    int i;    for( i=0; i<MAXTCPCONNECTION; i++){        if( tcpcon[i].use != 0 ) continue;		tcpcon[i].use = 1;		tcpcon[i].fd = -1;		if( (tcpcon[i].mbtop_ri = MEMBUF_findregBlankMemBuf()) < 0 )			return TCPSTRUCT_EMBFULL;		if( (tcpcon[i].mbtop_wi = MEMBUF_findregBlankMemBuf()) < 0 ){			MEMBUF_unregMemBuf( tcpcon[i].mbtop_ri );			return TCPSTRUCT_EMBFULL;		}		bzero( & tcpcon[i].remoteaddr , sizeof( struct sockaddr_in));		tcpcon[i].closed_by_remote = 0;		return i;    }    return TCPSTRUCT_ECFULL;}int MEMBUF_getFreeMem( void ){    return ( mesize - meuse ) * sizeof( mems[0].buf );}int MEMBUF_appReadBuffer(  int ti, char *data, int len){    int top, nextind;    top = tcpcon[ti].mbtop_ri;    for(;;){		if( (nextind = mems[top].next) == -1 ) break;		top = nextind;    }    return MEMBUF_appMemBufList( top , data , len );}int MEMBUF_appWriteBuffer( int ti, char *data, int len ){    int top, nextind;    top = tcpcon[ti].mbtop_wi;    for(;;){        if( (nextind = mems[top].next) == -1 ) break;        top = nextind;    }    return MEMBUF_appMemBufList( top , data , len );}int MEMBUF_appMemBufList( int top , char *data , int len ){    int fr = MEMBUF_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);		}        return -1;    }	data[len] = 0;    for(;;){        int blanksize = sizeof( mems[0].buf ) - mems[top].len;        int cpsize = ( rest <= blanksize ) ? rest : blanksize;        memcpy( mems[top].buf + mems[top].len, data + data_topaddr , cpsize );        mems[top].len += cpsize;        if( rest <= blanksize ){            return len;        } else {            int newmb;            rest -= cpsize;            data_topaddr += cpsize;            if( (newmb = MEMBUF_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);			}            mems[top].next = newmb;            top = mems[top].next;        }    }    return TCPSTRUCT_EBUG;}int MEMBUF_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=(mems[top].len<=(len-total))?mems[top].len:(len-total);        if( copyflag ) memcpy( out + total , mems[top].buf , cpsize );        total += cpsize;        if( consumeflag ){            mems[top].len -= cpsize;            if( mems[top].len > 0 ){                memmove( mems[top].buf, mems[top].buf+cpsize, sizeof(mems[top].buf)-cpsize);            }        }        top = mems[top].next;        if( total == len ){            break;        }    }    if( consumeflag ){        top = mems[top_store].next;        for(;;){            if( top == -1 )break;            if( mems[top].len == 0 ){                int prev;                mems[top_store].next = mems[top].next;                prev = top;                top = mems[top].next;				MEMBUF_unregMemBuf(  prev);            } else {                top = mems[top].next;            }        }    }    return total;}int MEMBUF_getLineReadBuffer( int ti , char *buf, int len ){	int i, l;     int top = tcpcon[ti].mbtop_ri;    int tci = 0 , breakflag = 0;    for(;;){		l = mems[top].len;        if( top == -1 )break;        for( i=0 ; i < l ; i++){            if( mems[top].buf[i] == '\n' ){                breakflag = 1;                break;            }            tci ++;        }        if( breakflag )break;        top = mems[top].next;    }    if( tci > len )        return TCPSTRUCT_ETOOLONG;    if( breakflag == 0 )        return 0;    return MEMBUF_consumeMemBufList( tcpcon[ti].mbtop_ri , buf , tci+1 , 1 , 1 );}int MEMBUF_readline( int ti , char *buf , int len , int kend , int kend_r ){    int l;    int minus = 0;    if( ti < 0 || ti >= MAXTCPCONNECTION || tcpcon[ti].use == 0 )        return TCPSTRUCT_EINVCIND;    l = MEMBUF_getLineReadBuffer( ti , buf , len );    if( l == 0 ){        if( tcpcon[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 MEMBUF_readline_chop( int ti , char *buf, int len ){    return MEMBUF_readline( ti , buf , len , 1,1);}int MEMBUF_writeline( int ti , char *buf , int len ){    if( ti < 0 || ti >= MAXTCPCONNECTION || tcpcon[ti].use == 0 )        return TCPSTRUCT_EINVCIND;        return MEMBUF_appWriteBuffer( ti , buf , len );}//-----------------------------------------------------------------------------int TCPIP_bindSocket( char *addr , int p , int timeout_ms){	int sockets;	//andy_log	log("_bindSocket( %d, %d)\n", p, timeout_ms);    select_timeout.tv_sec = timeout_ms / 1000;    select_timeout.tv_usec = (timeout_ms - ( timeout_ms/1000)*1000)*1000;    //socket    if( (sockets = socket( AF_INET , SOCK_STREAM ,  0 ) ) < 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( sockets, (struct sockaddr*) &localaddr, sizeof( localaddr )) < 0 )		return TCPSTRUCT_EBIND;    //listen    if( listen( sockets , BACKLOGNUM ) < 0 )		return TCPSTRUCT_ELISTEN;	tpsockfd1 = sockets;    return OK;}int TCPIP_connect( char *addr , int port ){    int newti ;    int s, r;    struct sockaddr_in svaddr;    struct hostent *he;	if( (s = socket( AF_INET, SOCK_STREAM , 0 )) < 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 = MEMBUF_findregBlankCon( );    if( newti < 0 ){        log( "connection FULL: newti:%d !\n", newti );        return TCPSTRUCT_ECFULL;    }    tcpcon[newti].fd = s;    memcpy( &tcpcon[newti].remoteaddr, &svaddr, sizeof( struct sockaddr_in));    return newti;}int TCPIP_close( int ti ){    if( ti < 0 || ti >= MAXTCPCONNECTION )return TCPSTRUCT_EINVCIND;    if( tcpcon[ti].use == 0 ){        return TCPSTRUCT_ECLOSEAGAIN;    }    close( tcpcon[ti].fd );    tcpcon[ti].use = 0;    tcpcon[ti].fd = -1;    MEMBUF_consumeMemBufList( tcpcon[ti].mbtop_ri , NULL, mesize * sizeof( mems[0].buf ), 1, 0 );    MEMBUF_consumeMemBufList( tcpcon[ti].mbtop_wi , NULL, mesize * sizeof( mems[0].buf ), 1, 0 );    MEMBUF_unregMemBuf( tcpcon[ti].mbtop_ri );    MEMBUF_unregMemBuf( tcpcon[ti].mbtop_wi );    tcpcon[ti].mbtop_ri = -1;    tcpcon[ti].mbtop_wi = -1;        return OK;}int TCPIP_selectdata( void){    int i;    int sret;    struct timeval t;    fd_set rfds, wfds , efds;      FD_ZERO( & rfds );    FD_ZERO( & wfds );    FD_ZERO( & efds );        for(i=0;i<MAXTCPCONNECTION;i++){        if( tcpcon[i].use &&            tcpcon[i].fd >= 0 && tcpcon[i].closed_by_remote ==0 ){            FD_SET( tcpcon[i].fd , & rfds );            FD_SET( tcpcon[i].fd , & wfds );            FD_SET( tcpcon[i].fd , & efds );        }    }        t = select_timeout;    sret = select( 1024, & rfds , (fd_set*)NULL, & efds , &t);	if( sret > 0 ) {		for(i=0; i<MAXTCPCONNECTION; i++){			if( ( tcpcon[i].fd >= 0 ) && FD_ISSET( tcpcon[i].fd , &rfds ) ){				int fr = MEMBUF_getFreeMem( );				int rr , readsize ;				if( fr <= 0 ) continue;				if( fr > sizeof(tmpbuf ) ){					readsize = sizeof( tmpbuf);				} else {					readsize = fr;				}				rr = read( tcpcon[i].fd , tmpbuf , readsize );				if( rr <= 0 ){					tcpcon[i].closed_by_remote = 1;				} else {					MEMBUF_appReadBuffer( i , tmpbuf , rr );				}			}		}	}    /* write */    t = select_timeout;        sret = select( 1024, (fd_set*)NULL, &wfds, & efds , &t);	if( sret > 0 ) {		for(i=0;i<MAXTCPCONNECTION;i++){			if( ( tcpcon[i].fd >= 0 ) && FD_ISSET( tcpcon[i].fd , &wfds ) ){				char send_buf[4096];				int l , rr;				memset( send_buf, 0, sizeof( send_buf));				l = MEMBUF_consumeMemBufList( tcpcon[i].mbtop_wi ,send_buf, sizeof(send_buf),0 , 1 );				rr = write( tcpcon[i].fd , send_buf , l );				if( rr < 0 ){					tcpcon[i].closed_by_remote = 1;				} else {					MEMBUF_consumeMemBufList( tcpcon[i].mbtop_wi , send_buf, l, 1 , 0 );				}			}		}	}	return 1;}int TCPIP_accept( int *tis , int ticount ){	int i, accepted=0;	fd_set rfds, wfds , efds;    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( tpsockfd1 , & rfds );        FD_SET( tpsockfd1 , & wfds );        FD_SET( tpsockfd1 , & efds );        asret = select( 1024, &rfds , &wfds , &efds, &t );        //if( FD_ISSET( tpsockfd1 , & rfds )){        if( (asret > 0) && FD_ISSET( tpsockfd1 , & rfds )){            struct sockaddr_in c;            int len , newsockfd;            int newcon;            bzero( &c , sizeof( c ));            len = sizeof( c );            fprintf( stderr, "i can accept " );            newcon = MEMBUF_findregBlankCon( );            if( newcon < 0 ) continue;            newsockfd = accept( tpsockfd1, (struct sockaddr*)&c , &len );            log( "tcpip accept: %d\n" , newsockfd );            if( newsockfd < 0 ){                MEMBUF_unregMemBuf( newcon );                continue;            }            set_nodelay( newsockfd );            tcpcon[newcon].fd = newsockfd;            memcpy( &tcpcon[newcon].remoteaddr , &c ,sizeof(c));            tis[accepted] = newcon;            accepted ++;        }    }    return accepted;}int TCPIP_send( int ti , char *buf , int len ){	return MEMBUF_writeline( ti , buf , len );}int TCPIP_checkCon( int ti){	if( ti < 0 || ti >= MAXTCPCONNECTION) return 0;	return tcpcon[ti].use;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女人****多毛耸耸8| 久久久影视传媒| 亚洲综合色成人| 在线免费观看成人短视频| 一区二区三区免费观看| 欧美午夜一区二区三区| 亚洲福利视频导航| 欧美成人艳星乳罩| 国产一区二区女| 中文字幕在线一区免费| 精品婷婷伊人一区三区三| 人禽交欧美网站| 国产女同互慰高潮91漫画| gogo大胆日本视频一区| 亚洲人成在线播放网站岛国| 欧美性猛交xxxx乱大交退制版| 天天av天天翘天天综合网| 欧美成人性战久久| 99久久精品免费| 色婷婷精品大在线视频| 性感美女久久精品| 久久精品人人做人人爽人人| 不卡的电影网站| 日韩高清不卡一区| 久久久不卡网国产精品二区 | 国产精品久久久久久久久动漫| 色婷婷激情一区二区三区| 日韩影院免费视频| 中文字幕欧美日本乱码一线二线| 在线中文字幕一区| 国产激情一区二区三区四区| 亚洲精品成人天堂一二三| 欧美大片日本大片免费观看| 不卡的av电影| 久久99久久久久| 亚洲女性喷水在线观看一区| 日韩精品一区二区三区在线播放| 99久久精品免费看国产免费软件| 麻豆精品一区二区三区| 亚洲欧美成人一区二区三区| 久久久久久夜精品精品免费| 欧美视频日韩视频| hitomi一区二区三区精品| 蜜桃精品在线观看| 一区二区三区不卡视频| 国产欧美va欧美不卡在线| 69av一区二区三区| 日本黄色一区二区| 粉嫩高潮美女一区二区三区| 人人爽香蕉精品| 亚洲影院在线观看| 国产精品福利影院| 国产欧美久久久精品影院| 日韩一区二区精品| 欧美性大战久久久| 91视视频在线观看入口直接观看www | 国产欧美一区二区三区网站| 欧美剧情片在线观看| 色噜噜夜夜夜综合网| 国产成人在线免费观看| 麻豆91免费看| 青椒成人免费视频| 亚洲成人一区在线| 亚洲国产美国国产综合一区二区| 国产精品亲子伦对白| 国产欧美日本一区视频| 国产日产亚洲精品系列| 2021中文字幕一区亚洲| 日韩精品一区二区三区中文精品| 亚洲激情在线播放| 亚洲欧美另类小说| 日韩一区在线免费观看| 国产精品色在线| 欧美激情一二三区| 国产精品美女www爽爽爽| 欧美韩国日本不卡| 国产精品久久久久婷婷二区次 | 国产精品国产自产拍高清av王其| 欧美激情一区不卡| 亚洲欧洲国产日韩| 亚洲视频每日更新| 亚洲精品免费播放| 亚洲午夜久久久久久久久电影院| 一级女性全黄久久生活片免费| 亚洲免费观看高清| 午夜视频在线观看一区二区 | 欧美在线色视频| 欧美日韩国产高清一区二区三区 | 国产亚洲成年网址在线观看| 国产色一区二区| 国产精品美女久久福利网站| 亚洲视频中文字幕| 亚洲一区二区在线免费看| 性久久久久久久久久久久| 日韩成人午夜精品| 国产美女视频91| 成人av在线播放网址| 欧美调教femdomvk| 欧美大片顶级少妇| 国产精品传媒视频| 性做久久久久久久久| 激情图区综合网| 91原创在线视频| 在线不卡免费av| 久久这里只有精品6| 亚洲欧洲韩国日本视频| 婷婷六月综合亚洲| 国产精品88av| 精品视频在线免费看| 2020国产精品| 一区二区三区不卡视频| 国内精品在线播放| 色一情一乱一乱一91av| 亚洲一区二区三区不卡国产欧美| 免费av网站大全久久| 波多野结衣一区二区三区| 欧美日韩美少妇 | 国产精品成人网| 日韩精品色哟哟| 懂色一区二区三区免费观看| 色94色欧美sute亚洲线路一久| 国产精品高清亚洲| 色综合久久88色综合天天免费| 不卡的av中国片| 色婷婷国产精品| 性欧美疯狂xxxxbbbb| 国产大片一区二区| 国产精品五月天| 欧美成人vps| 日本一区二区三区dvd视频在线| 国产精品996| 欧美日韩精品福利| 久久久久高清精品| 日韩二区三区在线观看| 香蕉乱码成人久久天堂爱免费| 成人晚上爱看视频| 在线观看日韩国产| 亚洲靠逼com| 亚洲h动漫在线| 国产成人无遮挡在线视频| 欧美精品一区二| 中文字幕在线不卡国产视频| 午夜久久久影院| 国产成a人亚洲| 欧美性xxxxxx少妇| 久久国产三级精品| 蜜乳av一区二区三区| 欧美三级视频在线播放| 中文字幕综合网| 国产成人在线免费| 久久久久国产精品免费免费搜索| 美女脱光内衣内裤视频久久网站 | 亚洲444eee在线观看| 色综合久久中文字幕| 国产精品免费久久| 国产精品一区在线| 精品sm捆绑视频| 青草av.久久免费一区| 欧美猛男男办公室激情| 亚洲综合在线电影| 91高清在线观看| 亚洲蜜臀av乱码久久精品蜜桃| jizzjizzjizz欧美| 1000部国产精品成人观看| 成人av网站在线| 日韩一区日韩二区| 色欧美片视频在线观看| 亚洲综合丝袜美腿| 欧美三级在线看| 日韩经典中文字幕一区| 欧美喷潮久久久xxxxx| 日韩高清在线一区| 精品国产伦一区二区三区观看体验 | 欧美日本一区二区三区四区| 亚洲国产美女搞黄色| 欧美日本不卡视频| 另类的小说在线视频另类成人小视频在线 | 一区二区理论电影在线观看| 日本韩国欧美在线| 五月天激情综合| 日韩精品资源二区在线| 激情图片小说一区| 国产精品国产三级国产有无不卡| 波多野结衣中文字幕一区| 亚洲欧美影音先锋| 欧美日韩精品一区二区三区| 免费观看一级特黄欧美大片| 精品国产制服丝袜高跟| 风流少妇一区二区| 亚洲免费观看高清完整| 欧美一级午夜免费电影| 国产精品自拍三区| 亚洲免费观看高清完整| 4438x成人网最大色成网站| 久久精品国产99久久6| 国产精品免费av| 欧美色视频一区| 国产成人精品一区二| 亚洲精品成a人| 26uuu亚洲综合色|