📄 sntplinuxclient.cpp
字号:
#include <stdio.h>
//#define __REDHATLINUX__
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
//#include <sys/types.h>
//#include <sys/stat.h>
#include <fcntl.h>
#include "OSHead.h"
#include "Timer.h"
#include "LogList.h"
#include "HighTimer.h"
#include "NtpTime.h"
#include "Log.h"
#include "NtpSock.h"
#include "NtpTime.h"
#include "ReadConfigFile.h"
pthread_t mLogThreadHandle;
bool mIsPrintLog = true; //false;
void Utility()
{
printf("===========================================================\n");
printf("* H/h ---------- Utility help *\n");
printf("* D/d ---------- Display / stop print log *\n");
printf("* R/r ---------- Restart read config file and restart *\n");
printf("* C/c ---------- Repair config file name *\n");
printf("* P/p ---------- Display system variable *\n");
printf("* E/e ---------- Exit System *\n");
printf("===========================================================\n");
}
void * _StartLog(void * param)
{
CLogList *pRecordLog = (CLogList *) param;
CLogList *pLog = NULL;
char logContent[1000], logTimer[50];
while(1)
{
while(!pRecordLog->IsEmpty() )
{
pLog = pRecordLog->RemoveHead();
///记录日志
if(mIsPrintLog)
{
LogPrintf(LOG_DEBUG,"%s",pLog->GetMsg());
}
if(pLog)
{
delete pLog;
pLog = NULL;
}
}
sleep(1);
}
}
int run_content()
{
//Test ReadConfigFile
/*
test.ReadFile("configfile.ini");
return 0;
*/
char mCfgFileName[250];
memset(mCfgFileName,0,sizeof(mCfgFileName));
strcpy(mCfgFileName,"configfile.ini");
ReadConfigFile configFile;
if(!configFile.ReadFile(mCfgFileName))
{
printf("Read config file %s error !\n");
}
CNtpTime testTm1 = CNtpTime::GetCurrentTime();
SYSTEMTIME st = SYSTEMTIME(testTm1);
CConnectionPeer mSntpClient;
//CLogList mRecordLog;
mSntpClient.SetIsServer(false);
mSntpClient.SetServerAddr((char *)configFile.GetServerAddr()); //"200.121.2.251");
mSntpClient.SetMulticastAddr((char *)configFile.GetMultiCastAddr()); //"224.0.1.1");
mSntpClient.SetServerPort(configFile.GetServerPort()); //1123);
// mSntpClient.SetLocalPort(mLocalPort);
mSntpClient.SetLocalPort(configFile.GetServerPort()); //1123); //mServerPort);
mSntpClient.SetUniCastPeriod(configFile.GetSyncPeriod());
//mSntpClient.SetLogDisplay(&mRecordLog);
unsigned short mode = configFile.GetCastMode();
if( mode == 0)
{
mSntpClient.SetAnyCast(false);
mSntpClient.SetMultiCast(false);
}
else if( mode == 1)
{
mSntpClient.SetAnyCast(false);
mSntpClient.SetMultiCast(true);
}
else if( mode == 2)
{
mSntpClient.SetAnyCast(true);
mSntpClient.SetMultiCast(false);
}
else
{
mSntpClient.SetAnyCast(false);
mSntpClient.SetMultiCast(false);
}
//mRecordLog.AddMsgIntoTail("启动客户端消息接受线程");
mSntpClient.StartDataRecvThread();
//mRecordLog.AddMsgIntoTail("启动客户端消息发送线程");
//mSntpClient.StartDataSendThread();
mSntpClient.DataSendThread();
/*
int ch;
while(1)
{
ch = getchar();
if( ch == 'H' || ch == 'h' )
Utility();
else if( ch == 'D' || ch == 'd' )
{
printf("日志显示\n");
mIsPrintLog = !mIsPrintLog;
}
else if( ch == 'C' || ch == 'c' )
{
printf("修改配置文件名 \n");
}
else if( ch == 'R' || ch == 'r' )
{
printf("重启系统 \n");
}
else if( ch == 'P' || ch == 'p' )
{
printf("显示系统变量 \n");
}
else if( ch == 'E' || ch == 'e' )
{
printf("退出系统 \n");
}
else
Utility();
ch = getchar();
sleep(1);
}
*/
}
int main()
{
pid_t pid,sid;
int fd,len;
if( opendir("/var/log/sync_timer_discramble") == NULL )
{
if( mkdir("/var/log/sync_timer_discramble",S_IRWXU ) < 0 )
{
perror(" mkdir ");
exit(EXIT_FAILURE);
}
}
pid = fork();
if( pid < 0 )
{
perror("fork");
exit(EXIT_FAILURE);
}
if( pid > 0 )
exit(EXIT_SUCCESS);
if( ( sid = setsid() ) < 0 )
{
perror("setsid");
exit(EXIT_FAILURE);
}
if((chdir("/var/log/sync_timer_discramble")) < 0 )
{
perror("chdir");
exit(EXIT_FAILURE);
}
umask(0);
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
run_content();
exit( EXIT_SUCCESS);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -