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

📄 readconfigfile.cpp

📁 linux程序
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>

#include "ReadConfigFile.h"

ReadConfigFile::ReadConfigFile()
{
	mSyncPeriod = 10;
	mServerPort = 123;
	mCastMode = 0;   //0--unicast 1-multicast 2-anycast

    memset(mServerAddr,0,sizeof(mServerAddr));
    memset(mMultiCastAddr,0,sizeof(mMultiCastAddr));
    
    strcpy(mServerAddr,"200.121.2.251");
    strcpy(mMultiCastAddr,"224.0.1.1");

}

ReadConfigFile::~ReadConfigFile()
{
	
}

bool ReadConfigFile::ReadConfigVariable(FILE *file)
{
	mSyncPeriod = 1000;
	mServerPort = 123;
	mCastMode = 0;   //0--unicast 1-multicast 2-anycast
    memset(mServerAddr,0,sizeof(mServerAddr));
    memset(mMultiCastAddr,0,sizeof(mMultiCastAddr));
    strcpy(mServerAddr,"200.121.2.251");
    strcpy(mMultiCastAddr,"224.0.1.1");
    
    char lineBuf[1000];
    char lineVariable[100], lineVarContent[300];
    
    char curCh[5];
    int bufLen = 1000,lineLen = 0;
    
    while(!feof(file))
    {
    	memset(lineBuf,0,sizeof(lineBuf));
    	memset(lineVariable,0,sizeof(lineVariable));
    	memset(lineVarContent,0,sizeof(lineVarContent));
    	
    	/// Read Line
    	memset(curCh,0,sizeof(curCh));
    	lineLen = GetLine(lineBuf,bufLen,file);
    	if(lineLen == -1)
    	    break;
    	int i = 0;
    	int flag = 0;  //read var name
    	while(lineBuf[i] == ' ')
    	    i ++;
    	int j = 0;    
    	while( i < lineLen && (lineBuf[i] != ' ') && (lineBuf[i] != '=') )
    	{
    		lineVariable[j] = lineBuf[i];
    		i ++;
    		j ++;
    	}
    	if(i >= lineLen)
    	    continue;
    	    
    	lineVariable[j] = 0;
    	while(lineBuf[i] == ' ' || lineBuf[i] == '=' )
    	    i ++;
    	 
    	j = 0;    
    	while( i < lineLen && (lineBuf[i] != ' ') && (lineBuf[i] != '=') )
    	{
    		lineVarContent[j] = lineBuf[i];
    		i ++;
    		j ++;
    	}
    	if( j > 0)
    	    lineVarContent[j] = 0;
    	else
    	    continue;
    	
    	if(!strcmp(lineVariable,"mSyncPeriod"))
    	{
    		int sLen = strlen(lineVarContent);
    		if(sLen > 0)
    			mSyncPeriod = atoi(lineVarContent);
    	}
    	else if(!strcmp(lineVariable,"mServerPort"))
    	{
    		int sLen = strlen(lineVarContent);
    		if(sLen > 0)
    			mServerPort = atoi(lineVarContent);
    	}
    	else if(!strcmp(lineVariable,"mCastMode"))
    	{
    		int sLen = strlen(lineVarContent);
    		if(sLen > 0)
    			mCastMode = atoi(lineVarContent);
    	}
    	else if(!strcmp(lineVariable,"mServerAddr"))
    	{
    		int sLen = strlen(lineVarContent);
    		if(sLen > 0 && sLen < 16)
    			strcpy(mServerAddr,lineVarContent);
    	}
    	else if(!strcmp(lineVariable,"mMultiCastAddr"))
    	{
    		int sLen = strlen(lineVarContent);
    		if(sLen > 0 && sLen < 16)
    			strcpy(mMultiCastAddr,lineVarContent);
    	}
    	else
    	    continue;
    }
    return true;
	
}

int ReadConfigFile::GetLine(char *lineBuf, int bufLen, FILE *file)
{
	char charBuf[5];
	int len = 0, i = 0, retval, curPos = 0;
	while(1)
	{
		retval = fread(charBuf,1,1,file);
		if( retval <= 0)
		{
			lineBuf[i] = 0;
		    return i;
		}
		if(charBuf[0] == 13)
		    continue;
		if( charBuf[0] == 10 )
		{
			lineBuf[i] = 0;
		    return i;
		}
		lineBuf[i] = charBuf[0];
		i ++;
		if( i > bufLen)
		    return -1;
	}
	
	return -1;
}

bool ReadConfigFile::ReadFile(char *configfile)
{
	FILE *fp = fopen(configfile,"r");
    if(fp == NULL)
  		return false;

  	ReadConfigVariable(fp);	
  	if(fp)
  	  	fclose(fp);
 
 
	return true;
}

const char *ReadConfigFile::GetServerAddr()
{
	return mServerAddr;
	
}

const char *ReadConfigFile::GetMultiCastAddr()
{
	return mMultiCastAddr;
	
}

unsigned int ReadConfigFile::GetSyncPeriod()
{
	return mSyncPeriod;
}

unsigned short ReadConfigFile::GetServerPort()
{
	return mServerPort;
	
}

unsigned short ReadConfigFile::GetCastMode()
{
	return mCastMode;
	
}

⌨️ 快捷键说明

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