file writer test

 

#include "stdafx.h"

#include <memory.h>

#include <bitset>

 

enum BIT_FLAG

{

BIT_RECTIME = 0,

BIT_SRC,

BIT_DST,

BIT_SENDTIME

};

 

typedef struct Recoder

{

SYSTEMTIME recTime;

unsigned __int32 SrcIP;

unsigned __int16 SrcPort;

unsigned __int32 DstIP;

unsigned __int16 DstPort;

SYSTEMTIME sendTime;

}Recoder;

 

const int BUFFER_LEN = 1024;

class TracyLog

{

public:

TracyLog()

{

memset( m_RecoderBuffer, 0, sizeof(m_RecoderBuffer) );

memset( m_LocalBuffer, 0, sizeof(m_LocalBuffer) );

memset( &m_Recorder, 0, sizeof(m_Recorder) );

}

 

~TracyLog()

{

}

 

void Reset()

{

m_iID = 0;

memset( m_RecoderBuffer, 0, sizeof(m_RecoderBuffer) );

memset( m_LocalBuffer, 0, sizeof(m_LocalBuffer) );

memset( &m_Recorder, 0, sizeof(m_Recorder) );

m_bitFlag.reset();

}

 

void SetReceiveTime()

{

m_bitFlag.set( BIT_RECTIME );

GetSystemTime( &m_Recorder.recTime );

}

void SetSendTime()

{

m_bitFlag.set( BIT_SENDTIME );

GetSystemTime( &m_Recorder.sendTime );

}

void SetID(int ID)

{

m_iID = ID;

}

void SetSource()

{

m_bitFlag.set(BIT_SRC);

m_Recorder.SrcIP = 20197125;

m_Recorder.SrcPort = 7780;

}

 

void SetDst()

{

m_bitFlag.set(BIT_DST);

m_Recorder.DstIP = 20019825;

m_Recorder.DstPort = 7777;

}

 

char* GetBuffer()

{

if( m_bitFlag.test( BIT_RECTIME ) )

{

sprintf_s( m_RecoderBuffer, BUFFER_LEN, "/r/n%04d%02d%02d,%02d%02d%02d:%06d",

m_Recorder.recTime.wYear, m_Recorder.recTime.wMonth, m_Recorder.recTime.wDay,

m_Recorder.recTime.wHour, m_Recorder.recTime.wMinute, m_Recorder.recTime.wSecond, m_Recorder.recTime.wMilliseconds );

}

else

{

sprintf_s( m_RecoderBuffer, BUFFER_LEN, "/r/n," );

}

 

if( m_bitFlag.test( BIT_SRC ) )

{

in_addr addr;

addr.S_un.S_addr = m_Recorder.SrcIP;

sprintf_s( m_LocalBuffer, BUFFER_LEN,",%s:%d", inet_ntoa( addr ), m_Recorder.SrcPort );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

else

{

sprintf_s( m_LocalBuffer, BUFFER_LEN,"," );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

 

if( m_bitFlag.test( BIT_DST ) )

{

in_addr addr;

addr.S_un.S_addr = m_Recorder.DstIP;

sprintf_s( m_LocalBuffer, BUFFER_LEN,",%s:%d", inet_ntoa( addr ), m_Recorder.DstPort );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

else

{

sprintf_s( m_LocalBuffer, BUFFER_LEN,"," );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

 

if( m_bitFlag.test( BIT_SENDTIME ) )

{

sprintf_s( m_LocalBuffer, BUFFER_LEN, ",%04d%02d%02d,%02d%02d%02d:%06d",

m_Recorder.sendTime.wYear, m_Recorder.sendTime.wMonth, m_Recorder.sendTime.wDay,

m_Recorder.sendTime.wHour, m_Recorder.sendTime.wMinute, m_Recorder.sendTime.wSecond, m_Recorder.sendTime.wMilliseconds );

strcat(  m_RecoderBuffer, m_LocalBuffer );

}

else

{

sprintf_s( m_LocalBuffer, BUFFER_LEN,",," );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

 

sprintf_s( m_LocalBuffer, BUFFER_LEN,",%d", m_iID );

strcat( m_RecoderBuffer, m_LocalBuffer );

 

return m_RecoderBuffer;

}

 

private:

int m_iID;

char m_RecoderBuffer[BUFFER_LEN];

char m_LocalBuffer[BUFFER_LEN];

Recoder m_Recorder;

std::bitset< 20 > m_bitFlag; 

};

 

 

int _tmain(int argc, char* argv[])

{

FILE* LogFile = nullptr;

 

LogFile = fopen( "c://Hector//logFile.log", "wb" );

 

TracyLog LogIns;

 

for( int i = 0; i < 9000; ++i )

{

LogIns.Reset();

LogIns.SetID( i );

LogIns.SetReceiveTime();

LogIns.SetSource();

LogIns.SetDst();

if( 0 == i%5 )

{

in_addr addr;

addr.S_un.S_addr = 41598986;

inet_ntoa( in_addr(addr) );

}

LogIns.SetSendTime();

 

char* pBuffer = LogIns.GetBuffer();

size_t len = strlen( pBuffer );

fwrite( pBuffer, sizeof(unsigned char), len, LogFile );

}

fclose( LogFile );

 

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值