⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simutil.ec

📁 仿真测试接口程序。根据电总《用户接入网管理功能与管理接口技术规范》之《与112集中受理系统接口规范》
💻 EC
📖 第 1 页 / 共 2 页
字号:
/*#define SYBASE_ENV    1 */#include "simu112.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <malloc.h>#ifdef SYBASE_ENV#include <sybfront.h>#include <sybdb.h>#include <syberror.h>#endifEXEC SQL INCLUDE sqlca;extern void unprocessdata(char *, char *);DEVICEHEAD *device_head;extern COMPRULEDATA comp_rule_data[MAX_SWITCH + 1];extern SOCKETSTRUCT so[MAX_FD];extern char LIC_USERNAME[61];extern int LIC_DRIVERNUMBER;void ReadIniFile(char *szFileName, char *szStringName, char *szStringValue,								 char *szDefaultValue);static char *StringToupper(char *p);int f_is_ts_busy(char *ts_address, int ts_port);	/* 1 - busy   0 - idle */int getCompareDBrows(switch_name)EXEC SQL BEGIN DECLARE SECTION;char *switch_name;EXEC SQL END DECLARE SECTION;{	EXEC SQL BEGIN DECLARE SECTION;	short table_rows;	EXEC SQL END DECLARE SECTION;	table_rows = -1;	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;	EXEC SQL SELECT count(*) into:table_rows from CompareTable where Switch =:switch_name;	return (short) table_rows;sqlerror:	fLogInfo("\nSQL ERROR in getCompareDBrows !!");	fLogInfo("\nSQLCODE: %d", sqlca.sqlcode);	fLogInfo("\nERRMSG: %.70s \n", sqlca.sqlerrm);	return -1;}int getRouteDBrows(void){	EXEC SQL BEGIN DECLARE SECTION;	short routeDBrows;	EXEC SQL END DECLARE SECTION;	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;	EXEC SQL SELECT count(*) into:routeDBrows from Exchange, Switch	  where Exchange.Switch = Switch.Switch and Switch.TestType = '2';	return (int) routeDBrows;sqlerror:	fLogInfo("\nSQL ERROR in getRouteDBrows !!");	fLogInfo("\nSQLCODE: %d", sqlca.sqlcode);	fLogInfo("\nERRMSG: %.70s \n", sqlca.sqlerrm);	return -1;}char switchType(char *switch_string){	COMPRULEDATA *p;	int i;	for (i = 0; i < MAX_SWITCH + 1; i++)	{		p = &comp_rule_data[i];		if (strlen(p->SwitchName) == 0)			break;		if (strcmp(switch_string, p->SwitchName) == 0)			return (char) i;	}	return (char) 0;}/************************************************************* *initialize the route table for deciding the terminal server* *return 0:success                                           * *      -1:failure                                           * *************************************************************//*int setRouteTable(DBPROCESS *dbproc) */int setRouteTable(void){	EXEC SQL BEGIN DECLARE SECTION;	char s1[11];									/*Exchange.Exchange */	char s2[31];									/*Switch.Address */	char s3[7];										/*Switch.PortNumber */	char s4[2];										/*Switch.TestPortType */	char s5[9];										/*Switch.SwitchPasswd */	char s6[11];									/*Switch.ModemTelePhone */	char s7[11];									/*Switch.SIMSwitchType */	char s8[21];									/*Switch.SIMSwitchIP */	char s9[7];										/*Switch.SIMSwitchPort */	char s10[21];									/*Switch.RtuId */	char s11[2];									/*Switch.UseGrade */	char s12[17];									/*Switch.SwitchUserName */	char s13[2];									/*Switch.MultConnect */	EXEC SQL END DECLARE SECTION;	/*RETCODE rc; */	int row, len, rtu_row;	char temp[21];	char old_Address[31];	char old_PortNumber[7];	if ((device_head = malloc(sizeof(DEVICEHEAD))) == NULL)	{		fLogInfo("\nERROR in setRouteTable !!");		fLogInfo("\nERROR when Malloc for device_head.\n");		return -1;	}	if ((device_head->count = getRouteDBrows()) == -1)	{		free(device_head);		return -1;	}	if ((device_head->test_device = malloc(sizeof(TESTDEVICE) * device_head->count)) == NULL)	{		fLogInfo("\nERROR in setRouteTable !!");		fLogInfo("\nERROR when Malloc for device_head->test_device.\n");		free(device_head);		return -2;	}	row = 0;	old_Address[0] = '\0';	old_PortNumber[0] = '\0';	rtu_row = 0;	EXEC SQL DECLARE my_cur1 CURSOR FOR	  SELECT distinct Exchange.Exchange, Switch.Address, Switch.PortNumber, NVL(Switch.TestPortType,' '),	  NVL(Switch.SwitchPasswd,' '), NVL(Switch.ModemTelePhone, '000'), NVL(Switch.SIMSwitchType,' '),	  NVL(Switch.SIMSwitchIP,' '), NVL(Switch.SIMSwitchPort,' '), NVL(Switch.RtuId,' '), NVL(Switch.UseGrade,'0'),	  NVL(Switch.SwitchUserName,' '), NVL(Switch.MultConnect,'0')	  FROM Exchange, Switch	  WHERE Exchange.Switch = Switch.Switch and Switch.TestType = '2'	ORDER BY Switch.Address, Switch.PortNumber;	EXEC SQL OPEN my_cur1;	EXEC SQL WHENEVER NOT FOUND GOTO notfound;	EXEC SQL WHENEVER SQLERROR GOTO sqlerror;	/* printf("device_head->count=%d\n",device_head->count); */	/* while (1){ */	while (row < device_head->count)	{		EXEC SQL FETCH my_cur1 INTO:s1,:s2,:s3,:s4,:s5,:s6,:s7,:s8,:s9,:s10,:s11,		: s12,:s13;		RemoveWhitespace(s1);		strncpy((device_head->test_device + row)->ExkNumber, (char *) s1, (len = strlen(s1)));		(device_head->test_device + row)->ExkNumber[len] = 0;		RemoveWhitespace((device_head->test_device + row)->ExkNumber);		StringToupper((device_head->test_device + row)->ExkNumber);		RemoveWhitespace(s2);		strncpy((device_head->test_device + row)->TSAddress, (char *) s2, (len = strlen(s2)));		(device_head->test_device + row)->TSAddress[len] = 0;		RemoveWhitespace((device_head->test_device + row)->TSAddress);		RemoveWhitespace(s3);		strncpy((device_head->test_device + row)->TSPortNo, (char *) s3, (len = strlen(s3)));		(device_head->test_device + row)->TSPortNo[len] = 0;		RemoveWhitespace((device_head->test_device + row)->TSPortNo);		RemoveWhitespace(s4);		strncpy(temp, (char *) s4, (len = strlen(s4)));		temp[len] = 0;		(device_head->test_device + row)->TestPortType = temp[0];		RemoveWhitespace(s5);		strncpy((device_head->test_device + row)->PortPassword, (char *) s5, (len = strlen(s5)));		(device_head->test_device + row)->PortPassword[len] = 0;		RemoveWhitespace((device_head->test_device + row)->PortPassword);		RemoveWhitespace(s6);		strncpy((device_head->test_device + row)->DialNumber, (char *) s6, (len = strlen(s6)));		(device_head->test_device + row)->DialNumber[len] = 0;		RemoveWhitespace((device_head->test_device + row)->DialNumber);		RemoveWhitespace(s7);		strncpy(temp, (char *) s7, (len = strlen(s7)));		temp[len] = 0;		RemoveWhitespace(temp);		(device_head->test_device + row)->SwitchType = switchType(temp);		RemoveWhitespace(s8);		strncpy((device_head->test_device + row)->ServerAddress, (char *) s8, (len = strlen(s8)));		(device_head->test_device + row)->ServerAddress[len] = 0;		RemoveWhitespace((device_head->test_device + row)->ServerAddress);		RemoveWhitespace(s9);		strncpy(temp, (char *) s9, (len = strlen(s9)));		temp[len] = 0;		(device_head->test_device + row)->ServerPort = atoi(temp);		RemoveWhitespace(s10);		strncpy((device_head->test_device + row)->RtuId, (char *) s10, (len = strlen(s10)));		(device_head->test_device + row)->RtuId[len] = 0;		RemoveWhitespace(StringToupper((device_head->test_device + row)->RtuId));		if (strcmp(old_Address, (device_head->test_device + row)->TSAddress) != 0				|| strcmp(old_PortNumber, (device_head->test_device + row)->TSPortNo) != 0)		{			rtu_row++;			strcpy(old_Address, (device_head->test_device + row)->TSAddress);			strcpy(old_PortNumber, (device_head->test_device + row)->TSPortNo);		}		/*RemoveWhitespace(s11);		   strncpy(temp,(char *)s11,(len=sizeof(s11)));		   temp[len]=0;		   (device_head->test_device+row)->UseGrade=temp[0]; */		(device_head->test_device + row)->UseGrade = s11[0];		RemoveWhitespace(s12);		strncpy((device_head->test_device + row)->SwitchUserName, (char *) s12, (len = strlen(s12)));		(device_head->test_device + row)->SwitchUserName[len] = 0;		RemoveWhitespace((device_head->test_device + row)->SwitchUserName);		/* RemoveWhitespace(s13); */		strncpy(temp, (char *) s13, (len = strlen(s13)));		temp[len] = 0;		(device_head->test_device + row)->MultConnect = temp[0];		/*		   printf("\n\ns1:%s,ExkNumber:%s\n",s1,(device_head->test_device+row)->ExkNumber);		   printf("s2:%s,TSAddress:%s\n",s2,(device_head->test_device+row)->TSAddress);		   printf("s3:%s,TSPortNo:%s\n",s3,(device_head->test_device+row)->TSPortNo);		   printf("s4:%s,TestPortType:%c\n",s4,(device_head->test_device+row)->TestPortType);		   printf("s5:%s,PortPassword:%s\n",s5,(device_head->test_device+row)->PortPassword);		   printf("s6:%s,DialNumber:%s\n",s6,(device_head->test_device+row)->DialNumber);		   printf("s7:%s,SwitchType:%d\n",s7,(device_head->test_device+row)->SwitchType);		   printf("s8:%s,ServerAddress:%s\n",s8,(device_head->test_device+row)->ServerAddress);		   printf("s9:%s,ServerPort:%d\n",s9,(device_head->test_device+row)->ServerPort);		   printf("s10:%s,RtuId:%s\n",s10,(device_head->test_device+row)->RtuId);		   printf("s11:%s,UseGrade:%c\n",s11,(device_head->test_device+row)->UseGrade);		   printf("s12:%s,SwitchUserName:%s\n",s12,(device_head->test_device+row)->SwitchUserName);		   printf("s13:%s,MultConnect:%c\n",s13,(device_head->test_device+row)->MultConnect);		 */		row++;		/* printf("row=%d,rtu_row=%d,\n",row,rtu_row); */	}notfound:	if (row == 0 || rtu_row > LIC_DRIVERNUMBER)	{		free(device_head->test_device);		free(device_head);		fLogInfo("\nERROR in setRouteTable !!");		if (rtu_row > LIC_DRIVERNUMBER)		{			fLogInfo("\nError encountered! Server abort!");			fLogInfo("\nThe routers number is more than Maximum drivers number!");			fLogInfo("\nPlease apply for new license!\n");			return -3;		}		else		{			fLogInfo("\nRouters number is 0!\n");			return -4;		}	}	device_head->count = row;	printf("device_head->count:%d, rtu_row:%d\n", device_head->count, rtu_row);	EXEC SQL CLOSE my_cur1;	return 0;sqlerror:	fLogInfo("\nSQL ERROR in setRouteTable !!");	fLogInfo("\nSQLCODE: %d", sqlca.sqlcode);	fLogInfo("\nERRMSG: %.70s \n", sqlca.sqlerrm);	return -5;}int freeRouteTable(){	free(device_head->test_device);	free(device_head);	return 0;}/********************************************************* *comment:                                               * *       select which terminal server can be used to test* *return 0:success   1:can't be found  2:busy            * *********************************************************/int getSIMterm(TESTREQMSG * term_srv,							 char *sim_drv_addr,							 int *sim_drv_port){	int i;	int flag;											/* 0-judged by ExkNumber, 1-judged by address and port, 2-judged by RtuId */	char temp_rtuid[25];	char temp_addr[20];	char temp_port[7];	int found_flag;	flag = 0;	if (term_srv->Tid[0] != '\0')	{		if (strstr(term_srv->Tid, ","))		{			f_split_addr_port(term_srv->Tid, temp_addr, temp_port);			flag = 1;		}		else		{			strcpy(temp_rtuid, term_srv->Tid);			flag = 2;		}	}	/* printf("flag=%d, RtuId=%s, TID=%s \n",flag,temp_rtuid,term_srv->Tid); */	switch (flag)	{	case 0:		found_flag = 0;		for (i = 0; i < device_head->count; i++)		{			if (strcmp(term_srv->ExkNumber, (device_head->test_device + i)->ExkNumber) == 0)			{													/* found */				found_flag = 1;				if ((device_head->test_device + i)->MultConnect != '1' && f_is_ts_busy((device_head->test_device + i)->TSAddress, atoi((device_head->test_device + i)->TSPortNo)))				{					printf("getSIMterm()::MultConnect=%c\n", (device_head->test_device + i)->MultConnect);					continue;							/* if TS is busy, then we finding next */				}				else				{					strcpy(sim_drv_addr, (device_head->test_device + i)->ServerAddress);					*sim_drv_port = (device_head->test_device + i)->ServerPort;					strcpy(term_srv->TSAddress, (device_head->test_device + i)->TSAddress);					strcpy(term_srv->TSPortNo, (device_head->test_device + i)->TSPortNo);					strcpy(term_srv->PortPassword, (device_head->test_device + i)->PortPassword);					strcpy(term_srv->SwitchUserName, (device_head->test_device + i)->SwitchUserName);					strcpy(term_srv->DialNumber, (device_head->test_device + i)->DialNumber);					term_srv->TestPortType = (device_head->test_device + i)->TestPortType;					term_srv->SwitchType = (device_head->test_device + i)->SwitchType;					term_srv->UseGrade = (device_head->test_device + i)->UseGrade;					return (0);						/*have been found */				}			}		}		if (found_flag)			return (2);		break;	case 1:		for (i = 0; i < device_head->count; i++)		{			/*			   printf("temp_addr=%s, temp_port=%s, TSAddress=%s, TSPortNo=%s \n",temp_addr,temp_port,(device_head->test_device+i)->TSAddress,(device_head->test_device+i)->TSPortNo);			 */			if ((strcmp(temp_addr, (device_head->test_device + i)->TSAddress) == 0)			&& (strcmp(temp_port, (device_head->test_device + i)->TSPortNo) == 0))			{				/*success */				strcpy(sim_drv_addr, (device_head->test_device + i)->ServerAddress);				*sim_drv_port = (device_head->test_device + i)->ServerPort;				strcpy(term_srv->TSAddress, (device_head->test_device + i)->TSAddress);				strcpy(term_srv->TSPortNo, (device_head->test_device + i)->TSPortNo);				strcpy(term_srv->PortPassword, (device_head->test_device + i)->PortPassword);				strcpy(term_srv->SwitchUserName, (device_head->test_device + i)->SwitchUserName);				strcpy(term_srv->DialNumber, (device_head->test_device + i)->DialNumber);				term_srv->TestPortType = (device_head->test_device + i)->TestPortType;				term_srv->SwitchType = (device_head->test_device + i)->SwitchType;				term_srv->UseGrade = (device_head->test_device + i)->UseGrade;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -