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

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

?? saacproto_oac.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
字號:
#include "version.h"#include "main.h"#include "util.h"#include "char.h"#include "tcpip_util.h"#include "saacproto_util.h"#include "saacproto_oac.h"#ifdef _OACSTRUCT_TCP#define BACKLOGNUM 5int oactcptype = -1;static int btime = 0;OACListArray OAC_List[MAXTCPCONNECTION];int OAC_InitTcpIp( int tcptype, char *addr, int tport){	int tcpdb=0, binport=OAC_PORT;	//andy_log	log( "_InitTcpIp( %d)\n", tcptype);	OAC_InitAclist();	if( MEMBUF_InitSize( CHARDATASIZE * 4 * MAXTCPCONNECTION , tcpdb ) != OK ){		return INIT_SOMEERROR;	}	if( tport > 0 )		binport = tport;	oactcptype = tcptype;	switch( tcptype){	case OACTYPE_BIND:		if( TCPIP_bindSocket( addr , binport, 0) < 0 )			return INIT_SOMEERROR;		break;	case OACTYPE_CONNECT:		OAC_ReadFileInsertAcList( "oac.lis");		OAC_ConnectOacList();//		if( OAC_ConnectOacList() == 0 )//			return INIT_SOMEERROR;		break;	default:		return INIT_SOMEERROR;	}	return OK;}int OAC_ConnectOacList( void){	int i=0, cnt=0;	for( i=0; i<MAXTCPCONNECTION; i++){		if( OAC_ConnectOacOne( i) < 0 ) continue;		usleep( 1000);		cnt++;	}/*andy_test=============	for( i=0; i<MAXTCPCONNECTION; i++){		if( OAC_List[i].use == 0 ) continue;		OAC_ACCharLoad_send( i, "ankoo", "123", 0, -1, -1);		cnt++;	}//======================*/	return cnt;}int OAC_ConnectOacOne( int ti){	int tfd;	if( OAC_List[ti].use == 0 ) return -1;	if( OAC_List[ti].fd != -1 ) return -1;	if( (tfd=TCPIP_connect( OAC_List[ti].addr , OAC_PORT )) < 0 ){		log( "Can't connect OAC:%s", OAC_List[ti].addr);		return -1;	}	log( "connect OAC:%s", OAC_List[ti].addr);	OAC_List[ti].fd = tfd;	OAC_ACLogin_send( tfd, "測試機");	return tfd;}int OAC_CheckConnect( void){	int i, ncon=-1;//andy_loglog( "_CheckConnect btime:%d\n", btime);	for( i=0; i<MAXTCPCONNECTION; i++){		if( OAC_List[i].use == 0 ) continue;		ncon=OAC_List[i].fd;		if( ncon == -1 || TCPIP_checkCon( ncon) == 0 ){			OAC_List[i].fd = -1;			OAC_ConnectOacOne( i);			return 1;		}else{			//andy_test			OAC_ACCharLoad_send( i, "ankoo", "123", 0, -1, -1);		}	}	return 0;}int OAC_select( void ){    int tis[BACKLOGNUM];    int ret, int detime;		detime = (int)time(NULL);	TCPIP_selectdata();	if( oactcptype == OACTYPE_BIND ){		ret = TCPIP_accept( tis, 1);		if( ret < 0 ){			return ret;		} else if( ret == 1 ){//andy_loglog( "OAC    SomeOne connect !!\n");			return tis[0];		} else {			return TCPSTRUCT_EBUG ;		}	}	if( detime > btime){		OAC_CheckConnect();		btime = detime+180;	}	return 1;}int OAC_ReadMessLine( void){	int i=0, l;	char buf[ CHARDATASIZE*4 ];	for( i=0; i<MAXTCPCONNECTION; i++){		if( TCPIP_checkCon( i) == 0 ) continue;		l = MEMBUF_readline_chop( i , buf, sizeof(buf) -1 );		if( l == TCPSTRUCT_ETOOLONG || l < 0 ){			//andy_log			log( "_close( %d)!\n", i);			TCPIP_close( i);		}else if( l == 0 ){			;		}else{			char debugfun[256];//andy_log//log( "OAC readline:%s len:%d !!\n", buf, l);						buf[l]=0;			if( OAC_ACDispatchMessage( i , buf, debugfun) < 0 ){				TCPIP_close(i);				log( "OAC(%d) Message error:%s\n", i, debugfun);			}		}	}	return 1;}//DispatchMessage--------------------------------------------------------------int OAC_ACDispatchMessage( int fd , char *encoded, char *debugfun){	unsigned int msgid;	char funcname[256];	saacproto_splitString( encoded );	saacproto_GetMessageInfo(&msgid , funcname ,sizeof(funcname), saacproto.token_list );	if( strcmp( funcname , "OACLogin" ) == 0 ){		char* oacname;		oacname = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));		OAC_ACLogin_recv( fd, oacname);		return 0;	}	if( strcmp( funcname , "OACProbe" ) == 0 ){		return 0;	}	if( strcmp( funcname , "OACCharLoad" ) == 0 ){		char *id, *charname;		int optti, clifd, gsfd;		id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));		charname = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));		optti = saacproto_demkstr_int( saacproto.token_list[4] );		clifd = saacproto_demkstr_int( saacproto.token_list[5] );		gsfd = saacproto_demkstr_int( saacproto.token_list[6] );		OAC_ACCharLoad_recv( fd, id, charname, optti, clifd, gsfd);		return 0;	}	if( strcmp( funcname , "OACCharSave" ) == 0 ){		char *id, *charname, *opt;		int optti, clifd, gsfd;		id = saacproto_wrapStringAddr( saacproto_stringwrapper[1] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[2] ));		charname = saacproto_wrapStringAddr( saacproto_stringwrapper[2] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[3] ));		opt = saacproto_wrapStringAddr( saacproto_stringwrapper[3] , saacproto.workbufsize , saacproto_demkstr_string( saacproto.token_list[4] ));		optti = saacproto_demkstr_int( saacproto.token_list[5] );		clifd = saacproto_demkstr_int( saacproto.token_list[6] );		gsfd = saacproto_demkstr_int( saacproto.token_list[7] );		OAC_ACCharSave_recv( fd, id, charname, opt, optti, clifd, gsfd);		return 0;	}	sprintf( debugfun, "%s", funcname);	return -1;}//---------------------------------------------------------------------------void OAC_ACLogin_recv( int fd, char* data ){	//andy_log	log( "_ACLogin_recv( %d, %s) \n", fd, data);	sprintf( OAC_List[fd].name, "%s", data);	OAC_List[fd].use = 1;}void OAC_ACLogin_send( int fd, char* data ){	saacproto_CreateHeader( saacproto.work , "OACLogin" );	saacproto_strcatsafe( saacproto.work , saacproto_mkstr_string( data ) ,saacproto.workbufsize );	OAC_Send( fd , saacproto.work );}//---------------------------------------------------------------------------void OAC_ACCharLoad_recv( int fd, char *id, char *charname, int optti, int clifd, int gsfd)//要求{	int charindex;	char loadbuf[CHARDATASIZE];	//andy_log	log( "_ACCharLoad_recv( %d, %s, %s, %d)\n", fd, id, charname, optti);#if 1	charindex = getCharIndexByName( id , charname );	if( charindex < 0 ){		OAC_ACCharSave_send( fd, id, charname, FAILED, optti, clifd, gsfd);	}	if( loadCharOne( id , charindex ,  loadbuf , sizeof( loadbuf )-1) <0){		OAC_ACCharSave_send( fd, id, charname, FAILED, optti, clifd, gsfd);	}else{		OAC_ACCharSave_send( fd, id, charname, loadbuf, optti, clifd, gsfd);	}#else	if( loadCharOne( id , optti ,  loadbuf ,sizeof( loadbuf ) -1) < 0 ){		OAC_ACCharSave_send( fd, id, charname, FAILED, optti, clifd, gsfd);	}else{		OAC_ACCharSave_send( fd, id, charname, loadbuf, optti, clifd, gsfd);	}#endif}void OAC_ACCharLoad_send( int fd, char *id, char *charname, int optti, int clifd, int gsfd){	saacproto_CreateHeader( saacproto.work , "OACCharLoad" );	saacproto_strcatsafe( saacproto.work, saacproto_mkstr_string( id), saacproto.workbufsize );	saacproto_strcatsafe( saacproto.work, saacproto_mkstr_string( charname), saacproto.workbufsize );	saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(optti) ,saacproto.workbufsize );	saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(clifd) ,saacproto.workbufsize );	OAC_Send( fd , saacproto.work );}//---------------------------------------------------------------------------void OAC_ACCharSave_recv( int fd, char *id, char *charname, char *opt, int optti, int clifd, int gsfd){	//andy_log	log( "_ACCharSave_recv( %d, %s, %s, %d):%d\n", fd, id, charname, optti, strlen( opt));//	log( "_ACCharSave_recv( %d, %s, %s, %d)\nopt:%s\n", fd, id, charname, optti, opt);}void OAC_ACCharSave_send( int fd, char *id, char *charname, char *opt, int optti, int clifd, int gsfd){	saacproto_CreateHeader( saacproto.work , "OACCharSave" );	saacproto_strcatsafe( saacproto.work, saacproto_mkstr_string( id), saacproto.workbufsize );	saacproto_strcatsafe( saacproto.work, saacproto_mkstr_string( charname), saacproto.workbufsize );	saacproto_strcatsafe( saacproto.work, saacproto_mkstr_string( opt), saacproto.workbufsize );	saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(optti) ,saacproto.workbufsize );	saacproto_strcatsafe(saacproto.work , saacproto_mkstr_int(clifd) ,saacproto.workbufsize );	OAC_Send( fd , saacproto.work );}//---------------------------------------------------------------------------void OAC_Send( int fd , char *msg ){    char *encoded;    encoded = msg;	{		unsigned int l = strlen( encoded );		if( l < saacproto.workbufsize *3){			encoded[l] = '\n';			encoded[l+1] = 0;			l++;		}else{			//andy_log			log( "OAC l:%d < workbufsize:%d err : \n (%s)\n", l, saacproto.workbufsize, msg );		}		TCPIP_send( fd, encoded, l);	}}void OAC_InitAclist( void){	int i;	for( i=0; i<MAXTCPCONNECTION; i++){		OAC_List[i].use = 0;		OAC_List[i].fd = -1;	}}void OAC_ReadFileInsertAcList( char *filename){	FILE *fp=NULL;	int cnt=0;	char buf[512], buf1[256];	if( (fp=fopen( filename, "r")) == NULL ) return;	while( fgets( buf, sizeof(buf)-1, fp) ){		if( buf[0] == '#' || buf[0] == '\n' ||			buf[0] == 0 ) continue;		remove_r( buf );		easyGetTokenFromBuf( buf, ':', 1, buf1, sizeof( buf1));		sprintf( OAC_List[cnt].name, "%s", buf1);		easyGetTokenFromBuf( buf, ':', 2, buf1, sizeof( buf1));		sprintf( OAC_List[cnt].addr, "%s", buf1);		OAC_List[cnt].use = 1;		cnt++;		if( cnt >= MAXTCPCONNECTION ) break;	}	fclose( fp);	{//andy_log		int i;		for( i=0; i<MAXTCPCONNECTION; i++){			if( OAC_List[i].use == 0 ) continue;			log( "OAC_List[%d] %s %s .\n", i, OAC_List[i].name, OAC_List[i].addr)		}	}}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久一区二区视频| 国内成+人亚洲+欧美+综合在线| 日本成人中文字幕| 波多野结衣在线一区| 7799精品视频| 日韩一区欧美一区| 加勒比av一区二区| 欧美日韩成人在线| 亚洲欧洲国产日韩| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 精品一区二区在线看| 色偷偷成人一区二区三区91| 精品日韩一区二区三区免费视频| 亚洲愉拍自拍另类高清精品| 成人动漫精品一区二区| 精品国产一二三区| 秋霞成人午夜伦在线观看| 欧美怡红院视频| 成人欧美一区二区三区视频网页| 国产精品白丝av| 欧美成人高清电影在线| 日韩在线a电影| 欧美日韩欧美一区二区| 亚洲高清久久久| 欧美亚洲一区二区在线观看| 亚洲人成伊人成综合网小说| 国产成人亚洲综合a∨婷婷| 日韩亚洲欧美一区二区三区| 日本免费新一区视频| 欧美一级黄色片| 看片网站欧美日韩| 欧美一卡2卡三卡4卡5免费| 日韩黄色免费电影| 91精品国产综合久久国产大片| 午夜欧美2019年伦理| 在线不卡的av| 国内精品国产成人| 国产午夜久久久久| 成人性生交大片免费看在线播放 | 欧美色偷偷大香| 婷婷一区二区三区| 欧美一区二区网站| 狠狠色狠狠色综合| 久久精品在线免费观看| 成人av在线一区二区| 自拍偷拍亚洲激情| 欧美亚男人的天堂| 美女一区二区三区| 国产亚洲精品aa午夜观看| 成人一级片在线观看| 亚洲另类色综合网站| 欧美视频一区二区在线观看| 五月开心婷婷久久| 久久久亚洲国产美女国产盗摄| 国产成人精品aa毛片| 亚洲欧美日韩一区二区| 欧美日韩在线不卡| 精品一区二区免费视频| 国产日韩精品一区二区三区在线| 成人av小说网| 丝袜美腿亚洲综合| 久久精品一级爱片| 91久久精品一区二区三区| 视频一区国产视频| 国产精品剧情在线亚洲| 欧美日韩国产高清一区| 国产福利一区二区| 亚洲精品亚洲人成人网在线播放| 欧美日韩成人一区| 粉嫩久久99精品久久久久久夜| 亚洲中国最大av网站| 久久―日本道色综合久久| 成人国产视频在线观看| 偷窥少妇高潮呻吟av久久免费 | 欧美日韩美少妇| 激情久久久久久久久久久久久久久久| 国产欧美精品国产国产专区| 欧美亚洲国产bt| 国产一区在线看| 亚洲一区二区在线免费看| 久久亚洲二区三区| 精品视频1区2区3区| 成人午夜av电影| 精品在线一区二区| 亚洲一区二区三区四区的| 国产色产综合产在线视频| 欧美日韩国产bt| 91污在线观看| 国产精品456| 久久99在线观看| 亚洲chinese男男1069| 国产精品区一区二区三区| 欧美一级日韩一级| 在线精品视频免费观看| 99综合电影在线视频| 黄色成人免费在线| 舔着乳尖日韩一区| 亚洲午夜国产一区99re久久| 国产精品午夜免费| 久久九九全国免费| 欧美xfplay| 日韩午夜av一区| 51精品国自产在线| 欧美精品在线一区二区| 欧美性做爰猛烈叫床潮| 色国产综合视频| 91蜜桃在线免费视频| 成人成人成人在线视频| 成人av资源在线观看| 国产999精品久久久久久绿帽| 精品在线播放免费| 精品一区二区国语对白| 精品一区二区久久久| 久久国产精品99久久人人澡| 久久精品国产精品亚洲红杏| 日韩av电影免费观看高清完整版| 日韩精品乱码av一区二区| 亚洲一级不卡视频| 亚洲va欧美va国产va天堂影院| 亚洲国产三级在线| 天天综合天天综合色| 日本不卡的三区四区五区| 蜜臀av一级做a爰片久久| 男人的天堂久久精品| 黑人巨大精品欧美黑白配亚洲| 久久97超碰色| 成人精品视频网站| 91视频在线观看免费| 欧美亚洲高清一区| 欧美一区二区私人影院日本| 欧美精品一区二区三区视频| 国产日韩欧美高清| 一区二区三区免费| 日日夜夜免费精品视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久99久久久久久久久久久| 国产一区二区三区| 一本在线高清不卡dvd| 欧美日韩第一区日日骚| 久久精品视频免费| 亚洲综合区在线| 国内成人精品2018免费看| 97久久精品人人做人人爽| 欧美肥妇free| 亚洲国产精品成人综合| 亚洲一区中文日韩| 国内精品写真在线观看| 一本大道久久精品懂色aⅴ| 欧美精品v国产精品v日韩精品| 日韩欧美资源站| 中文字幕一区二区三区在线不卡| 亚洲精品中文字幕在线观看| 日本不卡视频在线观看| 成人av一区二区三区| 91精品一区二区三区久久久久久| 欧美激情艳妇裸体舞| 亚欧色一区w666天堂| 国产精品一区二区91| 欧美日韩综合色| 国产欧美综合在线观看第十页| 亚洲精品成人悠悠色影视| 午夜精品久久久久| 成人免费视频视频在线观看免费| 欧美巨大另类极品videosbest| 国产日韩欧美不卡在线| 蜜臀久久99精品久久久画质超高清| 成人性生交大片免费看视频在线| 91啪亚洲精品| 久久精品水蜜桃av综合天堂| 亚洲国产精品久久一线不卡| 岛国精品一区二区| 欧美xxxx在线观看| 午夜精品视频在线观看| 91视视频在线观看入口直接观看www | 日本韩国欧美一区| 久久青草欧美一区二区三区| 午夜精品福利一区二区三区蜜桃| 91小宝寻花一区二区三区| 国产欧美日韩亚州综合| 免费一级片91| 5566中文字幕一区二区电影| 一区二区三区在线观看视频| 国产成人免费在线视频| 日韩一级精品视频在线观看| 香蕉久久夜色精品国产使用方法 | 亚洲精品欧美二区三区中文字幕| 国内欧美视频一区二区| 日韩欧美一二三四区| 日韩成人午夜精品| 欧洲精品中文字幕| 一个色综合av| 色8久久人人97超碰香蕉987| 成人免费一区二区三区视频 | 久久精品国产第一区二区三区| 欧美系列在线观看| 夜色激情一区二区| 欧美性色aⅴ视频一区日韩精品| 亚洲视频一区二区在线观看| 96av麻豆蜜桃一区二区| 亚洲私人影院在线观看|