Hilfe! Probleme mit Socket-Programm



  • Hallo Leute!
    Ich brauche dringend eure Hilfe!
    Ich weis einfach nicht, warum die folgenden Dateien nicht korrekt
    kompiliert werden können.

    **
    --------------------Konfiguration: NetChat - Win32 Debug--------------------
    Kompilierung läuft...
    NetChatDlg.cpp
    MySocket.cpp
    MySocket.cpp(38) : error C2039: 'SetParent' : Ist kein Element von 'CMySocket'
    mysocket.h(15) : Siehe Deklaration von 'CMySocket'
    MySocket.cpp(40) : error C2065: 'm_pWnd' : nichtdeklarierter Bezeichner
    MySocket.cpp(40) : error C2440: '=' : 'class CDialog *' kann nicht in 'int' konvertiert werden
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    MySocket.cpp(49) : error C2065: 'CSocketDlg' : nichtdeklarierter Bezeichner
    MySocket.cpp(49) : error C2059: Syntaxfehler : ')'
    MySocket.cpp(58) : error C2248: "OnAccept" : Kein Zugriff auf private Element, dessen Deklaration in der Klasse "CNetChatDlg" erfolgte
    netchatdlg.h(49) : Siehe Deklaration von 'OnAccept'
    **

    Hoffe, ihr könnt mir weiterhelfen
    THX 🙂

    MySocket.cpp

    // MySocket.cpp: Implementierungsdatei
    //
    
    #include "stdafx.h"
    #include "NetChat.h"
    #include "MySocket.h"
    #include "NetChatDlg.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // CMySocket
    
    CMySocket::CMySocket()
    {
    }
    
    CMySocket::~CMySocket()
    {
    }
    
    //Die folgenden Zeilen nicht bearbeiten. Sie werden vom Klassen-Assistenten benötigt.
    #if 0
    BEGIN_MESSAGE_MAP(CMySocket, CAsyncSocket)
    	//{{AFX_MSG_MAP(CMySocket)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    #endif	// 0
    
    /////////////////////////////////////////////////////////////////////////////
    // Member-Funktion CMySocket 
    
    void CMySocket::SetParent(CDialog *pWnd)
    {
    	m_pWnd = pWnd;
    }
    
    void CMySocket::OnConnect(int nErrorCode)
    {
    // Sind Fehler aufgetreten?
          if (nErrorCode == 0)
              // Nein, OnAccept-Funktion des Dialogfelds aufrufen
              ((CSocketDlg*)m_pWnd)->OnConnect();
    }
    
    void CMySocket::OnAccept(int nErrorCode) 
    {
    	// Sind Fehler aufgetreten?
    	if (nErrorCode == 0)
    	// Nein, OnAccept-Funktion des Dialogfelds aufrufen
    	((CNetChatDlg*)m_pWnd)->OnAccept();
    }
    
    void CMySocket::OnSend(int nErrorCode)
    {
    // Sind Fehler aufgetreten?
          if (nErrorCode == 0)
              // Nein, OnAccept-Funktion des Dialogfelds aufrufen
              ((CNetChatDlg*)m_pWnd)->OnSend();
    }
    
    void CMySocket::OnReceive(int nErrorCode)
    {
    // Sind Fehler aufgetreten?
          if (nErrorCode == 0)
              // Nein, OnAccept-Funktion des Dialogfelds aufrufen
              ((CNetChatDlg*)m_pWnd)->OnReceive();
    }
    
    void CMySocket::OnClose(int nErrorCode)
    {
    // Sind Fehler aufgetreten?
          if (nErrorCode == 0)
              // Nein, OnAccept-Funktion des Dialogfelds aufrufen
              ((CNetChatDlg*)m_pWnd)->OnClose();
    }
    

    MySocket.h

    #if !defined(AFX_MYSOCKET_H__8ED834E0_66D9_11D8_86FF_0030F1A2113D__INCLUDED_)
    #define AFX_MYSOCKET_H__8ED834E0_66D9_11D8_86FF_0030F1A2113D__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // MySocket.h : Header-Datei
    //
    
    /////////////////////////////////////////////////////////////////////////////
    // Befehlsziel CMySocket 
    
    class CMySocket : public CAsyncSocket
    {
    // Attribute
    public:
    
    // Operationen
    public:
    	CMySocket();
    	virtual ~CMySocket();
    
    // Überschreibungen
    public:
    	// Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
    	//{{AFX_VIRTUAL(CMySocket)
    	//}}AFX_VIRTUAL
    
    	// Generierte Nachrichtenzuordnungsfunktionen
    	//{{AFX_MSG(CMySocket)
    		// HINWEIS - Der Klassen-Assistent fügt hier Member-Funktionen ein und entfernt diese.
    	//}}AFX_MSG
    
    // Implementierung
    protected:
        virtual void OnSend(int nErrorCode);
        virtual void OnReceive(int nErrorCode);
        virtual void OnClose(int nErrorCode);
        virtual void OnConnect(int nErrorCode);
        virtual void OnAccept(int ErrorCode);
    };
    
    /////////////////////////////////////////////////////////////////////////////
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
    
    #endif // AFX_MYSOCKET_H__8ED834E0_66D9_11D8_86FF_0030F1A2113D__INCLUDED_
    

    NetChatDlg.h

    // NetChatDlg.h : Header-Datei
    //
    #if !defined(AFX_NETCHATDLG_H__EDECAC44_662A_11D8_86FF_0030F1A2113D__INCLUDED_)
    #define AFX_NETCHATDLG_H__EDECAC44_662A_11D8_86FF_0030F1A2113D__INCLUDED_
    
    #include "MySocket.h"    // Hinzugefügt von der Klassenansicht 
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    /////////////////////////////////////////////////////////////////////////////
    // CNetChatDlg Dialogfeld
    
    class CNetChatDlg : public CDialog
    {
    // Konstruktion
    public:
    	void OnClose();
        void OnReceive();
        void OnSend();
        void OnConnect();
    	CNetChatDlg(CWnd* pParent = NULL);	// Standard-Konstruktor
    
    // Dialogfelddaten
    	//{{AFX_DATA(CNetChatDlg)
    	enum { IDD = IDD_NETCHAT_DIALOG };
    	CString	m_ip;
    	int		m_port;
    	//}}AFX_DATA
    
    	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
    	//{{AFX_VIRTUAL(CNetChatDlg)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV-Unterstützung
    	//}}AFX_VIRTUAL
    
    // Implementierung
    protected:
    	HICON m_hIcon;
    
    	// Generierte Message-Map-Funktionen
    	//{{AFX_MSG(CNetChatDlg)
    	virtual BOOL OnInitDialog();
    	afx_msg void OnPaint();
    	afx_msg HCURSOR OnQueryDragIcon();
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    private:
        void OnAccept();
        CMySocket m_sConnectSocket;
        CMySocket m_sListenSocket; 
    };
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
    
    #endif // !defined(AFX_NETCHATDLG_H__EDECAC44_662A_11D8_86FF_0030F1A2113D__INCLUDED_)
    


  • Hallo,

    sorry, aber das paßt alles nicht zusammen. Es gibt kein SetParent und kein Member m_pWnd in der MySocket.h, und auch wenn es das gäbe, wäre es vom Design her fragwürdig, warum ein CMySocket-Objekt einen Parent(ein Window) haben soll. Es gibt auch keinen CSocketDlg, ich sehe jedenfalls keinen. Du kannst also die fehlenden Member in MySocket.h hinzufügen, was CSocketDlg sein soll(vielleicht ein CNetChatDlg?), weiß ich allerdings nicht. Außerdem kann nicht auf OnAccept zugegriffen werden, weil dies eine private Member-Funktion von CNetChatDlg ist.

    MfG



  • Sieh dir das Bsp. aus VC++ 6 in 21 Tagen nochmal genau an. Bitte richtig Abschreiben.


Anmelden zum Antworten