Probleme bei CAsyncSocket Verbindung als Host.



  • Hallo.

    Ich versuche gerade meine WinCE Anwendung als Host für eine Socket Verbindung fungieren zu lassen.

    Wenn sich nun meine Remote Anwendung mit meiner WinCE Anwendung verbindet, wird OnAccept aufgerufen. Soweit alle klar.

    Nur sehe ich nun aber, dass auch OnSend aufgerufen wird. Wieso ist das so?

    Und wenn meine Remote Anwendung etwas sendet, wird nicht OnReceive aufgerufen.

    Das ist der verwendete Code

    //-------------------------------------//
     //   Dialog Klasse                     //
    //-------------------------------------//
    class CServerSocket02Dlg : public CDialog
    {
    ...
    ...
    private:
    	CMySocket m_sListenSocket;
    	CMySocket m_sConnectSocket;
    public:
    	afx_msg void OnBnClickedButton1();
    	void OnAccept();
    	void OnClose();
    	void OnConnect();
    	void OnReceive();
    	void OnSend();
    };
    
    BOOL CServerSocket02Dlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	m_sConnectSocket.SetParent(this);
    	m_sListenSocket.SetParent(this);
    
    	// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
    	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
    	SetIcon(m_hIcon, TRUE);			// Großes Symbol verwenden
    	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden
    
    	// TODO: Hier zusätzliche Initialisierung einfügen
    
    	return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
    }
    
    void CServerSocket02Dlg::OnBnClickedButton1()
    {
    	m_sListenSocket.Create(6000);
    	m_sListenSocket.Listen();
    }
    
    void CServerSocket02Dlg::OnAccept()
    {
    	RETAILMSG(1, (_T("OnAccept: \r\n")));
    	m_sListenSocket.Accept(m_sConnectSocket);
    }
    
    void CServerSocket02Dlg::OnClose()
    {
    	RETAILMSG(1, (_T("OnClose: \r\n")));
    }
    
    void CServerSocket02Dlg::OnConnect()
    {
    	RETAILMSG(1, (_T("OnConnect: \r\n")));
    }
    
    void CServerSocket02Dlg::OnReceive()
    {
    	RETAILMSG(1, (_T("OnReceive: \r\n")));
    }
    
    void CServerSocket02Dlg::OnSend()
    {
    	RETAILMSG(1, (_T("OnSend: \r\n")));
    }
    
      //-------------------------------------//
     //   Socket Klasse                     //
    //-------------------------------------//
    // CMySocket-Memberfunktionen
    
    void CMySocket::SetParent(CDialog * pWnd)
    {
    	m_pWnd = pWnd;
    }
    
    void CMySocket::OnAccept(int nErrorCode)
    {
    	if(nErrorCode == 0)
    		((CServerSocket02Dlg*)m_pWnd)->OnAccept();
    
    	CAsyncSocket::OnAccept(nErrorCode);
    }
    
    void CMySocket::OnClose(int nErrorCode)
    {
    	if(nErrorCode == 0)
    		((CServerSocket02Dlg*)m_pWnd)->OnClose();
    
    	CAsyncSocket::OnClose(nErrorCode);
    }
    
    void CMySocket::OnConnect(int nErrorCode)
    {
    	if(nErrorCode == 0)
    		((CServerSocket02Dlg*)m_pWnd)->OnConnect();
    
    	CAsyncSocket::OnConnect(nErrorCode);
    }
    
    void CMySocket::OnReceive(int nErrorCode)
    {
    	if(nErrorCode == 0)
    		((CServerSocket02Dlg*)m_pWnd)->OnReceive();
    
    	CAsyncSocket::OnReceive(nErrorCode);
    }
    
    void CMySocket::OnSend(int nErrorCode)
    {
    	if(nErrorCode == 0)
    		((CServerSocket02Dlg*)m_pWnd)->OnSend();
    
    	CAsyncSocket::OnSend(nErrorCode);
    }
    


  • War noch ein Bug in meiner Client Anwendung. Nun funktioniert es.

    Aber das OnSend finde ich immer noch komisch.


Anmelden zum Antworten