📄 readconfigfile.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 + -