OnAccept Methode wird nicht aufgerufen



  • 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?


Anmelden zum Antworten