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

📄 datasendsocket.cpp

📁 电子监控的网络编程实例
💻 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 + -