• 大小: 148KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-08-18
  • 语言: C/C++
  • 标签: VC++  网络编程  

资源简介

基于VC++网络编程,SOCKET编程采用I/O完成模型,完成考试系统!

资源截图

代码片段和文件信息

// ClientContext.cpp: implementation of the CClientContext class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “Server.h“
#include “ClientContext.h“
#include “ServerView.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern CServerApp theApp;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CClientContext::CClientContext(SOCKET s CServerView* pServView)
:m_s(s)
m_eState(CClientContext::UNKNOWN)
m_pServerView(pServView)
m_nGrade(-1)
m_bPulse(FALSE)

{
ZeroMemory(&m_iIO OVERLAPPEDPLUSLEN);
ZeroMemory(&m_oIO OVERLAPPEDPLUSLEN);

}

CClientContext::~CClientContext()
{
CancelIo((HANDLE)m_s);
closesocket(m_s);
m_pServerView = NULL;
}
/*
 * 发送试卷
 */
BOOL CClientContext::AsyncSendPaper( void )
{
DWORD flags = 0; //标志
DWORD sendBytes =0; //发送字节数


ZeroMemory(&m_oIO OVERLAPPEDPLUSLEN);
m_oIO.type = IOWritePAPER; //操作类型

WSABUF wsaBuf[2];
m_oIO.hdr.ustype = PAPER; //试卷类型
m_oIO.hdr.usLen = m_pServerView->m_usPaperLen; //试卷长度

wsaBuf[0].buf = (char*)&m_oIO.hdr; //发送包头
wsaBuf[0].len = HEADELEN;

wsaBuf[1].buf = m_pServerView->m_cPaper; //试卷
wsaBuf[1].len = m_pServerView->m_usPaperLen; //长度
//发送数据
if (WSASend(m_s 
wsaBuf

&sendBytes 
flags
&m_oIO.overlapped
NULL) == SOCKET_ERROR)
{
if(ERROR_IO_PENDING != WSAGetLastError())//成功发起重叠操作
{
return FALSE;
}
}
return TRUE;
}


/*
 * 接收数据
 */
BOOL CClientContext::AsyncRecvHead( void )
{
DWORD flags = 0; //标志
DWORD recvBytes =0; //发送字节数

ZeroMemory(&m_iIO OVERLAPPEDPLUSLEN);
m_iIO.type = IOReadHead;//操作类型

WSABUF wsaBuf;
wsaBuf.buf = (char*)&m_iIO.hdr; //接收包头
wsaBuf.len = HEADELEN; //长度

//读取数据
if (WSARecv(m_s 
&wsaBuf

&recvBytes 
&flags
&m_iIO.overlapped
NULL) == SOCKET_ERROR)
{
if(ERROR_IO_PENDING != WSAGetLastError())
{
return FALSE;
}
}
return TRUE;
}

/*
 * 接收包头完毕处理
 */
void CClientContext::OnRecvHeadCompleted( DWORD dwIOSize )
{
if (PULSE == m_iIO.hdr.ustype) //处理心跳包
{
m_bPulse = TRUE; //接收到心跳包
m_time = CTime::GetCurrentTime(); //时间
AsyncRecvHead(); //继续接收包头

}else if (STATE == m_iIO.hdr.ustype) //接收包体
{
AsyncRecvBody(m_iIO.hdr.usLen);
}
}



/*
 * 发送数据完毕处理
 */
void CClientContext::OnSendCompleted( DWORD dwIOSize )
{
//
}
/*
 * 发送验证学号失败信息
 */
BOOL CClientContext::AsyncSendFailLoginMsg( void )
{
DWORD flags = 0; //标志
DWORD sendBytes =0; //发送字节数


ZeroMemory(&m_oIO OVERLAPPEDPLUSLEN);
m_oIO.type = IOWriteUnLogin; //操作类型

WSABUF wsaBuf;
m_oIO.hdr.ustype = STNAME; //数据包类型
m_oIO.hdr.usLen = 0; //试卷长度0

wsaBuf.buf = (char*)&m_oIO.hdr; //发送包头
wsaBuf.len = HE

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6786  2008-01-24 20:10  10\10.6\Server\ClientContext.cpp

     文件       1681  2008-01-22 19:48  10\10.6\Server\ClientContext.h

     文件       2917  2008-01-23 11:34  10\10.6\Server\ClientManager.cpp

     文件       1271  2008-01-22 19:57  10\10.6\Server\ClientManager.h

     文件         64  2009-10-22 22:10  10\10.6\Server\Exam.ldb

     文件     466944  2009-10-14 11:30  10\10.6\Server\Exam.mdb

     文件       3178  2008-01-23 16:02  10\10.6\Server\MainFrm.cpp

     文件       1548  2008-01-21 23:49  10\10.6\Server\MainFrm.h

     文件      90619  2006-12-26 21:07  10\10.6\Server\msado15.tlh

     文件      76614  2006-12-26 21:07  10\10.6\Server\msado15.tli

     文件       1078  2008-01-15 16:05  10\10.6\Server\res\Server.ico

     文件        398  2008-01-15 16:05  10\10.6\Server\res\Server.rc2

     文件       1078  2008-01-15 16:05  10\10.6\Server\res\ServerDoc.ico

     文件        478  2008-01-18 23:07  10\10.6\Server\res\Toolbar.bmp

     文件        824  2008-01-18 23:07  10\10.6\Server\Resource.h

     文件      28308  2009-10-14 11:11  10\10.6\Server\Server.aps

     文件       2413  2009-10-14 11:11  10\10.6\Server\Server.clw

     文件       4849  2008-01-22 21:26  10\10.6\Server\Server.cpp

     文件       4966  2008-01-16 15:57  10\10.6\Server\Server.dsp

     文件        738  2009-10-14 11:23  10\10.6\Server\Server.dsw

     文件       1439  2008-01-15 16:49  10\10.6\Server\Server.h

     文件     173056  2009-10-14 13:46  10\10.6\Server\Server.ncb

     文件      58880  2009-10-14 13:46  10\10.6\Server\Server.opt

     文件       2323  2009-10-22 22:10  10\10.6\Server\Server.plg

     文件      12070  2008-01-22 14:17  10\10.6\Server\Server.rc

     文件       1849  2008-01-22 23:37  10\10.6\Server\ServerAddrDlg.cpp

     文件       1486  2007-12-19 12:46  10\10.6\Server\ServerAddrDlg.h

     文件       1931  2008-01-22 08:26  10\10.6\Server\ServerDoc.cpp

     文件       1509  2008-01-22 08:25  10\10.6\Server\ServerDoc.h

     文件      22731  2008-01-23 16:42  10\10.6\Server\ServerView.cpp

............此处省略36个文件信息

评论

共有 条评论