📄 datasendsocket.cpp
字号:
// DataSendSocket.cpp : implementation file
//
#include "stdafx.h"
#include "videocapture.h"
#include "DataSendSocket.h"
#include "VideoCaptureView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDataSendSocket
CDataSendSocket::CDataSendSocket()
{
notRepeatData=FALSE;
bufSize=0;
}
CDataSendSocket::~CDataSendSocket()
{
}
// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CDataSendSocket, CAsyncSocket)
//{{AFX_MSG_MAP(CDataSendSocket)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif // 0
/////////////////////////////////////////////////////////////////////////////
// CDataSendSocket member functions
void CDataSendSocket::OnClose(int nErrorCode)
{
Close();
CVideoCaptureView *pView = CVideoCaptureView::GetView();
while(!pView)
pView = CVideoCaptureView::GetView();
pView->ExitSendDataThread=TRUE;
pView->m_ServerSkt.m_bConnected=FALSE;
// ::WaitForSingleObject(pView->hThreadCopy,INFINITE);
DWORD dwExitCode;
::GetExitCodeThread(pView->hThreadCopy,&dwExitCode);
if(dwExitCode == STILL_ACTIVE)
{
pView->pThreadDataSend->ResumeThread();
}
// ShowMessage("远程客户断开连接");
pView->SetRemoteMode("远程客户断开连接");
pView->m_dwManualTransRecordID=0;
pView->pcsDlg->GetDlgItem(IDC_STATIC_FTP)->SetWindowText("传输状态:停止");
// TerminateThread(pView->ThreadDateSend,0);
// CAsyncSocket::OnClose(nErrorCode);
}
void CDataSendSocket::OnSend(int nErrorCode)
{
if(nErrorCode)
ShowMessage("发送数据出错");
CAsyncSocket::OnSend(nErrorCode);
}
void CDataSendSocket::OnReceive(int nErrorCode)
{
if(nErrorCode)
return;
else
{
BYTE aaa[100];
memset(aaa,0,sizeof(aaa));
//aaa=new BYTE[100];
int size=Receive(aaa,sizeof(aaa));
TRACE(CString(aaa)+"\n");
if((bufSize+size)<=100)
{
memcpy(buf+bufSize,aaa,size);
bufSize+=size;
}
else
{
memcpy(buf+sizeof(buf)-size,aaa,size);
bufSize=sizeof(buf);
}
CString str;
str=PCHAR(buf);
if ((str.Find("$HEAD$")!=-1) || (str.Find("$NEXT$")!=-1) || (str.Find("$NEWO$")!=-1) ||str.Find("$REPT$")!=-1)
{
int pos=str.Find("$HEAD$");
if (pos==-1)
pos=str.Find("$REPT$");
notRepeatData=FALSE;
if (pos==-1)
{
pos=str.Find("$NEWO$");
notRepeatData=TRUE;
}
if(pos==-1)
{
pos=str.Find("$NEXT$");
notRepeatData=TRUE;
}
// TRACE(CString(buf)+"\n");
// ShowMessage(CString(buf));
memcpy(buf,buf+pos+6,sizeof(buf)-pos-6);
bufSize-=6;
CVideoCaptureView* pView=CVideoCaptureView::GetView();
while(!pView)
{
pView=CVideoCaptureView::GetView();
}
DWORD dwState=pView->pThreadDataSend->ResumeThread();
while(dwState==0)
{
//Sleep(0);
dwState=pView->pThreadDataSend->ResumeThread();
}
}
/* if(str.Find("$REPT$")!=-1)
{
CVideoCaptureView* pView=CVideoCaptureView::GetView();
while(!pView)
{
pView=CVideoCaptureView::GetView();
}
ResumeThread(pView->ThreadDateSend);
}
*/
}
CAsyncSocket::OnReceive(nErrorCode);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -