www.pudn.com > 200410111016053551.rar > TCPServerDoc.cpp
// TCPServerDoc.cpp : implementation of the CTCPServerDoc class
//
#include "stdafx.h"
#include "TCPServer.h"
#include "TCPServerDoc.h"
#include "Des.h"
#include "SetupDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTCPServerDoc
IMPLEMENT_DYNCREATE(CTCPServerDoc, CDocument)
BEGIN_MESSAGE_MAP(CTCPServerDoc, CDocument)
//{{AFX_MSG_MAP(CTCPServerDoc)
ON_COMMAND(ID_MENUITEMPORT, OnMenuitemport)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTCPServerDoc construction/destruction
CTCPServerDoc::CTCPServerDoc()
{
// TODO: add one-time construction code here
m_iTcpPort = 7001;
ZXZServer.m_pDoc = this;
if (ZXZServer.Create(m_iTcpPort))
ZXZServer.Listen();
else
{
AfxMessageBox("创建Socket失败!", MB_OK|MB_ICONERROR);
}
}
CTCPServerDoc::~CTCPServerDoc()
{
}
BOOL CTCPServerDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
((CEditView*)m_viewList.GetHead())->SetWindowText(NULL);
((CEditView*)m_viewList.GetTail())->SetWindowText(NULL);
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CTCPServerDoc serialization
void CTCPServerDoc::Serialize(CArchive& ar)
{
// CEditView contains an edit control which handles all serialization
((CEditView*)m_viewList.GetHead())->SerializeRaw(ar);
}
/////////////////////////////////////////////////////////////////////////////
// CTCPServerDoc diagnostics
#ifdef _DEBUG
void CTCPServerDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CTCPServerDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CTCPServerDoc commands
void CTCPServerDoc::WriteRecvData(char *szData)
{
int iLen;
CString strTemp = szData;
CEditView *pEdit = (CEditView *)m_viewList.GetHead();
if (pEdit!=NULL)
{
strTemp += _T("\r\n");
iLen = pEdit->GetWindowTextLength();
(pEdit->GetEditCtrl()).SetSel(iLen, iLen);
(pEdit->GetEditCtrl()).ReplaceSel(strTemp);
}
}
/////////////////////////////////////////////////////////////////////////////
BOOL CTCPServerDoc::SendData(char *szData)
{
int iLen=strlen(szData);
BYTE szTemp[4];
for(int i=0; iMessageBox("发送数据失败!", "", MB_OK|MB_ICONWARNING);
return FALSE;
}
}
else if (szData[i+1]=='\\')
{
if (!ZXZServer.SendData("\\", 1))
{
AfxGetMainWnd()->MessageBox("发送数据失败!", "", MB_OK|MB_ICONWARNING);
return FALSE;
}
i++;
}
else if ((szData[i+1]=='x' || szData[i+1]=='X') &&
((szData[i+2]>='0' && szData[i+2]<='9') ||
(szData[i+2]>='A' && szData[i+2]<='F') ||
(szData[i+2]>='a' && szData[i+2]<='f'))&&
((szData[i+3]>='0' && szData[i+3]<='9') ||
(szData[i+3]>='A' && szData[i+3]<='F') ||
(szData[i+3]>='a' && szData[i+3]<='f')) )
{
DSP_2_HEX((BYTE *)(szData+i+2), (BYTE *)szTemp, 2) ;
if (!ZXZServer.SendData((char *)szTemp, 1))
{
AfxGetMainWnd()->MessageBox("发送数据失败!", "", MB_OK|MB_ICONWARNING);
return FALSE;
}
i += 3;
}
else
{
AfxGetMainWnd()->MessageBox("发送数据格式错误!", "", MB_OK|MB_ICONWARNING);
return FALSE;
}
}
AfxGetMainWnd()->MessageBox("发送数据成功!", "", MB_OK);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
void CTCPServerDoc::OnMenuitemport()
{
// TODO: Add your command handler code here
CSetupDlg Dlg(m_iTcpPort);
int iRet = Dlg.DoModal();
if ( iRet > 0 )
{
m_iTcpPort = iRet;
ZXZServer.CloseAllSocket();
if (ZXZServer.Create(m_iTcpPort))
ZXZServer.Listen();
else
{
AfxGetMainWnd()->MessageBox("创建SOCKET失败!", "提示信息", MB_OK|MB_ICONERROR);
}
}
}
/////////////////////////////////////////////////////////////////////////////
BOOL CTCPServerDoc::SaveModified()
{
if (AfxMessageBox("是否真的退出?", MB_YESNO|MB_ICONINFORMATION)==IDYES)
return TRUE;
return FALSE;
}