P
Hallo Experten!
#include "StdAfx.h"
#include "TcpServer.h"
CTcpServer::CTcpServer(void)
: m_pParent(NULL)
, m_nRecvBufferSize(0)
, m_szInterface(_T(""))
, m_nPort(0)
, m_nPacketLength(0)
{
}
CTcpServer::~CTcpServer(void)
{
}
void CTcpServer::Init(CWnd* pParent, int nRecvBufferSize)
{
m_pParent = pParent;
m_nRecvBufferSize = nRecvBufferSize;
}
int CTcpServer::Start(CString szInterface , UINT nPort, int nPacketLength)
{
if(m_pParent)
{
m_szInterface = szInterface;
m_nPort = nPort;
m_nPacketLength = nPacketLength;
int ret;
if(m_szInterface.IsEmpty())
{
ret = m_SocketAccept.Create(m_nPort, SOCK_STREAM, NULL);
}
else
{
ret = m_SocketAccept.Create(m_nPort, SOCK_STREAM, m_szInterface);
}
if(ret)
{
if(m_SocketAccept.Listen(1))
{
return 1;
}
else
{
ShowErrorBox(GetLastError());
}
}
else
{
ShowErrorBox(GetLastError());
}
}
return 0;
}
int CTcpServer::Stop(void)
{
return 0;
}
void CTcpServer::ShowErrorBox(int nErrorCode)
{
CString szText;
szText.AppendFormat(_T("Socket - Errorcode : %i"),nErrorCode);
if(m_pParent)
{
MessageBox(m_pParent->GetSafeHwnd(),szText,NULL,MB_ICONERROR|MB_OK);
}
}
void CTcpServer::OnAccept(int nErrorCode)
{
if(m_SocketAccept.Accept(m_SocketConnection))
{
// Connected
CString szPeerName;
UINT nPeerPort;
GetPeerName(szPeerName,nPeerPort);
}
CSocket::OnAccept(nErrorCode);
}
Hier wird nun die Methode "OnAccept" nicht aufgerufen. Die Klasse CTcpServer ist ":public CSocket" .
In einem anderen Projekt habe ich von CSocket eine Klasse mySocket abgeleitet, da wird "OnAccept" aufgerufen. Hier ist ja nun eigentlich nix anders oder?