📄 ipstreamfile.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <unistd.h>
#include <assert.h>
#include <Utility.h>
#include "IpStreamFile.h"
CIpStreamFile::CIpStreamFile(int totisf)
{
assert(totisf>0);
m_itotisf=totisf;
m_itotused=0;
m_pisf=new Stru_IpStreamFile[m_itotisf];
if(m_pisf==NULL)
{
printf("new mem error\n");
exit(-1);
}
for(int i=0;i<m_itotisf;i++)
{
(m_pisf+i)->fp=NULL;
}
}
CIpStreamFile::~CIpStreamFile()
{
if(m_pisf!=NULL)
delete m_pisf;
}
bool CIpStreamFile::addOneStream(Stru_Socket *psocket,char *pfilename)
{
if(m_itotused>=m_itotisf)
return false;
FILE *fp=fopen(pfilename,"w");
if(fp==NULL)
return false;
(m_pisf+m_itotused)->fp=fp;
memcpy(&((m_pisf+m_itotused)->socket),psocket,sizeof(Stru_Socket));
strcpy((m_pisf+m_itotused)->szfilename,pfilename);
strcpy((m_pisf+m_itotused)->starttime,TUTime::YYYYMMDDHHMMSS());
m_itotused++;
return true;
}
void CIpStreamFile::timeOut()
{
printf("-----------------total stream [%d]-------------------\n",m_itotused);
for(int i=0;i<m_itotused;i++)
{
printf("(%s)\n",(m_pisf+i)->szfilename );
}
}
void CIpStreamFile::displayCurStream()
{
printf("-----------------total stream [%d]-------------------\n",m_itotused);
for(int i=0;i<m_itotused;i++)
{
printf("(%s)\n",(m_pisf+i)->szfilename );
}
}
int CIpStreamFile::delOneStream(Stru_Socket *psocket,char *begintime,char *filename)
{
Stru_IpStreamFile *psf=m_pisf;
int i;
for(i=0;i<m_itotused;i++)
{
if(psocket->saddr==(psf->socket).saddr)
if(psocket->daddr==(psf->socket).daddr)
if(psocket->sport==(psf->socket).sport)
if(psocket->dport==(psf->socket).dport)
{
break;
}
psf++;
}
if(i>=m_itotused)
return -1;
int filelen=ftell(psf->fp);
fclose(psf->fp);
strcpy(begintime, psf->starttime);
strcpy(filename, psf->szfilename);
m_itotused--;
if(i<m_itotused)
{
memcpy(psf,m_pisf+m_itotused,sizeof(Stru_IpStreamFile));
}
return filelen;
}
FILE *CIpStreamFile::searchFp(Stru_Socket *psocket)
{
Stru_IpStreamFile *psf=m_pisf;
int i;
for(i=0;i<m_itotused;i++)
{
if(psocket->saddr==(psf->socket).saddr)
if(psocket->daddr==(psf->socket).daddr)
if(psocket->sport==(psf->socket).sport)
if(psocket->dport==(psf->socket).dport)
{
break;
}
psf++;
}
if(i>=m_itotused)
return NULL;
return psf->fp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -