ChatClient IRC



  • Hi Rapha,

    das ganze wird wohl doch über IRC gehen.
    Hab da auch ne echt starke Seite gefunden. Die lohnt sich wirklich
    http://www.irc-mania.de/index.php

    Seh ich das richtig, das ich quali eine ganz normale Socketverbindung mit nen IRC-Server aufbaue und dann die Daten über Strings übergebe.

    z.B.
    USER IRC_USER 0 0: Realname
    NICK Trikor
    JOIN #Trikorchat
    Privmsg #Trikorchat Hallo leute

    und dann über m_sMySocket.Listen() die Strings entgegennehme um die Nachrichten der anderen Chatter in meinem Editfeld zu schreiben?



  • 100%ig richtig 👍
    Ich denke es gibt einige vorgefertigte IRC-Klassen, schau dich da mal um.

    Grüße Rapha



  • Wo???????



  • z.B. hier: http://www.codeguru.com/network/irc.html

    Grüße Rapha



  • Hi Rapha,

    die Klasse ist nicht ohne. Ich sitz jetzt schon seit Stunden, wie der Ochs form Berg und versuche mich in den Klassen einzulesen.
    Wenn ich das richtig sehe, werden in

    bool CIrcSession::Connect(const CIrcSessionInfo& info)
    

    die Daten für die Connection übergeben. Deshalb wollte ich eine protected Variable vom Typ const CIrcSessionInfo& namens m_ircAnmeldung anlegen.
    Dann m_ircAnmeldung füllen

    m_ircAnmeldung.sServer = "nexgo.de.eu.dat.net";
    m_ircAnmeldung.iPort = 7000;
    // usw.
    

    und anschließen aufrufen

    CIrcSession::Connect(m_ircAnmeldung);
    

    Mein Programm erkennt aber anscheinened const CIrcSessionInfo& obwohl ich irc.h in meine CHauptDlg.h includiert habe.
    Was mach ich falsch?



  • Nene, das & ist eine Refferenz 😉
    Einfach eine Variable vom Typ CIrcSessionInfo erstellen (kann temorär sein) und als Parameter übergeben ( angenommen m_Session ist eine Variable vom Typ CIrcSession:

    CIrcSessionInfo SessionInfo;
    /* SessionInfo hier mit Werten füllen */
    m_Session.Connect(SessionInfo);
    

    Grüße Rapha



  • CIrcSessionInfo SessionInfo;
    

    Hab ich auch schon probiert. Da sagt er mir immer nichtdeklarierter Bezeichner.
    Die CIrcSessionInfo ist ne struct in irc.h
    Und die irc.h habe ich in meiner CHauptDlg.h schon includiert.
    Warum funktioniert das nicht?



  • Haste mal alles bereinigt und alles neu erstellt?
    Ansonsten musst du irgendwas übersehen haben.

    Grüße Rapha



  • Alles bereinigt, fehler beibt. Vieleicht siehst Du ihn ja. Ich seh schon den Wald vor lauter Bäumen nicht.

    Meine Hauptdlg.h

    //{{AFX_INCLUDES()
    #include "mediaplayer2.h"
    #include "wmpplayer5.h"
    #include "irc.h"
    #include "MD5Checksum.h"
    #include "xShadeButton.h"
    //}}AFX_INCLUDES
    ...
    
    class CHauptDlg : public CDialog
    {
    // Konstruktion
    public:
    	CIrcSession m_Session;   //wird nicht erkannt
    	void SetChatLogin();
    	void Groessenanpassung();
    	CWnd* pMedia;
    	CWnd* pBild;
    	BOOL MsgSenden(CString Msg, BOOL Ok_Abbruch);
    	CStringArray m_strChannel;
    	CString m_strPasswortV;
    	CString m_strAnmeldung;
    	CString GetHttpSource(CString URL);
    	CHauptDlg(CWnd* pParent = NULL);	// Standard-Konstruktor
    

    Die irc.h

    #include "socket.h"
    #include "HauptDlg.h"
    #include <string>
    #include <vector>
    #include <map>
    #include <set>
    #include "CrossThreadsMessagingDevice.h"
    ...
    struct CIrcSessionInfo
    {
    	String sServer;
    	String sServerName;
    	unsigned int iPort;
    	String sNick;
    	String sUserID;
    	String sFullName;
    	String sPassword;
    	bool bIdentServer;
    	String sIdentServerType;
    	unsigned int iIdentServerPort;
    
    	CIrcSessionInfo();
    	CIrcSessionInfo(const CIrcSessionInfo& si);
    
    	void Reset();
    };
    
    ////////////////////////////////////////////////////////////////////
    
    class CIrcDefaultMonitor; // foreward
    
    class CIrcSession
    {
    public :
    	friend class CIrcDefaultMonitor;
    
    	CIrcSession(IIrcSessionMonitor* pMonitor = NULL);
    	virtual ~CIrcSession();
    //    usw.
    

    Da er ja auch CIrcSession m_Session; in der HauptDlg.h nicht erkennt, muß irgendwas beim includieren schief gehen. Aber was???



  • Kann es sein, dass ich die Klasse nicht benutzen kann, weil die Klasse für eine MDI-Anwendung geschrieben wurde?
    Mein Programm ist Dialogfeldbasierend.



  • Huhu !

    Probier mal diese Zeile in deiner Hauptdlg.h: using namespace irc;

    Gruss, Joe



  • Joe schrieb:

    Probier mal diese Zeile in deiner Hauptdlg.h: using namespace irc;

    Danke Joe, das war´s.

    Und dir natürlich auch, Rapha. 😃


Anmelden zum Antworten