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

📄 clientstreamsocket.cpp

📁 《医学图象的远程传输系统》
💻 CPP
字号:
// ClientStreamSocket.cpp : implementation file
//

#include "stdafx.h"
#include "TransClient.h"
#include "ClientStreamSocket.h"
#include "TransClientDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CClientStreamSocket

CClientStreamSocket::CClientStreamSocket(CTransClientDoc* pDoc)
{
    m_pDoc=pDoc; 
}

CClientStreamSocket::~CClientStreamSocket()
{
}


// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CClientStreamSocket, CAsyncSocket)
	//{{AFX_MSG_MAP(CClientStreamSocket)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif	// 0

/////////////////////////////////////////////////////////////////////////////
// CClientStreamSocket member functions


void CClientStreamSocket::OnReceive(int nErrorCode) 
{
	static int nRecvSize=0;
	static STREAM_DATA JpgData;
	if (nErrorCode==0){
		int rVal;
		do{
			rVal=Receive(&JpgData+nRecvSize,sizeof(STREAM_DATA)-nRecvSize);
			if (rVal>0){
				nRecvSize+=rVal;
				/*
				CString sResult;
				sResult.Format("Receive data size %d, total size %d.",rVal,nRecvSize);
				m_pDoc->DisplayMsg(sResult);
				*/
			}
			else if (rVal==SOCKET_ERROR){
				int nErrCode=GetLastError();
				CString sResult;
				sResult.Format("Socket error with code %d!",nErrCode);
				m_pDoc->DisplayMsg(sResult);
				nRecvSize=0;//reset this variable, even it's not correct.
			}
			if (nRecvSize==sizeof(STREAM_DATA)){
				m_pDoc->ReceiveData(&JpgData);
				nRecvSize=0;
                //send back "recv" code
                Send("recv",4);
			}
		}while (rVal==0);//!!while (rVal>0)??
	}

	/*static int nRecvSize=0;
    static STREAM_DATA JpgData;
	if (nErrorCode==0){
		int rVal=Receive(&JpgData+nRecvSize,sizeof(STREAM_DATA)-nRecvSize);
		if (rVal>0){
			nRecvSize+=rVal;
			CString sResult;
			sResult.Format("Receive data size %d, total size %d.",rVal,nRecvSize);
			m_pDoc->DisplayMsg(sResult);
		}
		if (nRecvSize==sizeof(STREAM_DATA)){
			m_pDoc->ReceiveData(&JpgData);
			nRecvSize=0;
		}
	}*/

	/*STREAM_DATA JpgData;
	int nRecvSize=Receive(&JpgData,sizeof(STREAM_DATA));
    if (nRecvSize==sizeof(STREAM_DATA)){
		m_pDoc->ReceiveData(&JpgData);
	}
	else{
		CString sResult;
		sResult.Format("Receive data size not correct %d.",nRecvSize);
		m_pDoc->DisplayMsg(sResult);
	}*/

	CAsyncSocket::OnReceive(nErrorCode);
}

void CClientStreamSocket::OnConnect(int nErrorCode) 
{
    if (nErrorCode==0)
        m_pDoc->DisplayMsg("Connect Successful.");
    else
        m_pDoc->DisplayMsg("Connect failed!");
	CAsyncSocket::OnConnect(nErrorCode);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -