www.pudn.com > 200410111016053551.rar > ReqSocket.cpp
// Server.cpp : implementation file
//
#include "stdafx.h"
#include "reqsocket.h"
#include "Des.h"
#include "ZXZTCPServer.h"
#include "TCPServerDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CServer
CReqSocket::CReqSocket(CZXZTCPServer *pSocket)
{
m_pListenSocket = pSocket;
}
CReqSocket::~CReqSocket()
{
}
// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CServer, CAsyncSocket)
//{{AFX_MSG_MAP(CServer)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif // 0
/////////////////////////////////////////////////////////////////////////////
// CServer member functions
void CReqSocket::OnReceive(int nErrorCode)
{
BYTE szBuf[2048];
BYTE szDSP[8192+1];
int iLen;
memset(szBuf, 0, sizeof(szBuf));
if ( (iLen=Receive((char *)szBuf, sizeof(szBuf))) == SOCKET_ERROR )
{
iLen = GetLastError();
wsprintf((char *)szBuf, "Recv Data Error:%d", iLen);
AfxGetMainWnd()->MessageBox((char *)szBuf, "½ستص´يخَ", MB_OK|MB_ICONERROR);
}
else
{
char szTemp[8];
memset(szDSP, 0, sizeof(szDSP));
for(int i=0; i0x7E && szBuf[i]<0xA1) )
{
wsprintf(szTemp, "\\x%02X", szBuf[i]);
strcat((char *)szDSP, szTemp);
}
else if (szBuf[i]=='\\')
{
strcat((char *)szDSP, "\\\\");
}
else if (szBuf[i]>=0xA1 && szBuf[i+1]>=0xA1)
{
szDSP[strlen((char *)szDSP)] = szBuf[i];
szDSP[strlen((char *)szDSP)] = szBuf[i+1];
i++;
}
else if (szBuf[i]>=0xA1 && szBuf[i+1]<0xA1)
{
wsprintf(szTemp, "\\x%02X", szBuf[i]);
strcat((char *)szDSP, szTemp);
}
else
{
szDSP[strlen((char *)szDSP)] = szBuf[i];
}
}
m_pListenSocket->m_pDoc->WriteRecvData((char *)szDSP);
}
CAsyncSocket::OnReceive(nErrorCode);
}
void CReqSocket::OnClose(int nErrorCode)
{
CAsyncSocket::OnClose(nErrorCode);
Close();
m_pListenSocket->CloseSocket(this);
// m_AfxGetMainWnd()->PostMessage(WM_CLOSEREQSOCKET, 0, (LPARAM)this);
}