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

📄 sntplinuxclient.cpp

📁 linux程序
💻 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 + -