Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 06:37

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



c# SmartIrc4net Problem

Discussion on c# SmartIrc4net Problem within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2013
Posts: 3
Received Thanks: 0
Unhappy c# SmartIrc4net Problem

Guten Tag,

ich bin grade dabei ein kleines Programm mit integriertem IRC Client zu schreiben. Allerdings macht die Lib (SmartIrc4net) einige Problem.. erstmal der Code:
Code:
public void OnQueryMessage(Data ircdata)
        {
            requested_channel = ircdata.MessageEx[1];
            channel = irc.GetChannel(requested_channel);
            switch (ircdata.MessageEx[0]) {
                case "join":
                    irc.Join(ircdata.MessageEx[1]);
                break;
                case "part":
                    irc.Part(ircdata.MessageEx[1]);
                break;
                case "say":
                irc.Message(SendType.Message, ircdata.MessageEx[1], ircdata.MessageEx[2]);
                break;
            }
        }
        public void IRCfunction(string text)
        {
            irc.SendDelay = 200;
            irc.AutoRetry = true;
            irc.ChannelSyncing = true;
            irc.OnQueryMessage += new MessageEventHandler(OnQueryMessage);

            string[] serverlist;
            serverlist = new string[] {"irc.echo-net.eu"};

            int    port   = 6667;
            if (irclogin == false)
            {
                if (irc.Connect(serverlist, port) == true)
                {
                    irc.Login(username, "FWM Tool User");
                    irc.Join("#fwm");
                    
                    irclogin = true;
                    //irc.Message(SendType.Message, "#fwm", text);
                }
                else
                {
                    MessageBox.Show("couldn't connect!");
                }
            }
            else
            {
               
               
            }
            thread = new Thread(ReadCommands);
            thread.Start();

            thread.Join();
            irc.Listen();
        }

        private void ReadCommands()
        {
            while (true)
            {
                string cmd = irc_input.Text;
                irc.Message(SendType.Message, "#fwm", cmd);
                irc.Listen();
            }
        }
Das Problem ist das er die Message nur absendet wenn ein irc.Listen(); im Thread ist allerdings dann das Programm sofort hängt. Außerdem ist aus der Dokumentation der Lib nicht ersichtlich mit welcher Funktion man den IRC Chat verlauf auslesen kann?
Ich bin selber Anfänger in C# und finde daher trotz stundenlangen Googelns keine Lösung.

Hoffe nur das sich hier jemand findet der mir bei dem Problem helfen könnte.

MfG
G-Mac_x3 is offline  
Old 06/04/2013, 21:32   #2
 
Hiris's Avatar
 
elite*gold: 99
Join Date: Apr 2011
Posts: 730
Received Thanks: 236
short iq = 100
if( you_think_shit_is_the_same(c++,c#) )
{
iq = -iq;
}
Hiris is offline  
Thanks
1 User
Old 06/04/2013, 21:36   #3
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Erstmal falsche Section.

Ich kenne die Lib nicht, aber kurzes Googeln bringt mich mal auf folgenden spontanen Trichter:
Direkt auf erster Seite steht folgendes:
Quote:
Simple event driven IRC library to allow easy development of IRC aware applications under the .NET framework
Daraus folgere ich mal: Du schreibst entsprechende Methoden für senden, empfangen etc., registrierst diese für die Events und rufst dann _einmalig_ irc.Listen() auf (was dann wahrscheinlich die Mainloop ist, von welcher die Events abgearbeitet werden usw.).

Wie gesagt, einfach nur ins Blaue hinein geraten. Wäre schön, wenns jemand (der Erfahrung mit der Lib hat) bestätigen bzw. widerlegen würde.
Schlüsselbein is offline  
Old 06/04/2013, 21:46   #4
 
elite*gold: 0
Join Date: Jun 2013
Posts: 3
Received Thanks: 0
Quote:
Originally Posted by Hiris View Post
short iq = 100
if( you_think_shit_is_the_same(c++,c#) )
{
iq = -iq;
}
Jeder kann sich mal in der Sektion verlesen.Ich weiß das es nicht das gleiche ist. Also lass doch bitte so sinnlose Kommentare.

Danke Schlüsselbein, so habe ich mir das eigentlich auch gedacht allerdings habe ich durch Tests raus bekommen das wenn ich irc.Message(inhalt); nutzen direkt danach irc.Listen nutzen muss, sonst sendet er die Message nicht.

Aber schonmal danke

MfG
G-Mac_x3 is offline  
Old 06/04/2013, 21:48   #5
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Ich glaube eher, dass du irc.Listen() nur einmal(!) aufrufen musst. Wie gesagt, kann ich mich irren (habe nichtmal in die Docs geschaut). Setz mal n Breakpoint nach irc.Listen() und schau ob die Methode returnt.
Schlüsselbein is offline  
Old 06/04/2013, 22:24   #6
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Ich glaube, es sieht so aus:
Code:
irc.Message("bla");
while(irc.Listen())
{
    Sleep(10);
}
Also intern zumindest

Padmak
Padmak is offline  
Old 06/04/2013, 22:28   #7

 
xxfabbelxx's Avatar
 
elite*gold: 900
Join Date: Apr 2009
Posts: 14,981
Received Thanks: 11,403
Arrow C/C++ -> .NET Languages

moved
xxfabbelxx is offline  
Old 06/04/2013, 22:31   #8
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Kurze Verbesserung: Ich hab mich vertran (irc4net statt SmartIrc4net). Deswegen erstmal alle Antworten alten Antworten von mir ignorieren.

Edit: Hatte doch recht. Jungs, ein wenig die Doku und Exmaples lesen hilft.


Zuerst werden die Methoden geschrieben, dann regisitriert:
Code:
        // here we connect the events of the API to our written methods
        // most have own event handler types, because they ship different data
        irc.OnQueryMessage += new IrcEventHandler(OnQueryMessage);
        irc.OnError += new ErrorEventHandler(OnError);
        irc.OnRawMessage += new IrcEventHandler(OnRawMessage);
Und zuletzt wird in die Loop gesprungen, die sich um die Events kümmert:
Code:
            // here we tell the IRC API to go into a receive mode, all events
            // will be triggered by _this_ thread (main thread in this case)
            // Listen() blocks by default, you can also use ListenOnce() if you
            // need that does one IRC operation and then returns, so you need then 
            // an own loop 
            irc.Listen();
Falls du nun ne GUI-Anwendung schreibst (lasse das erstmal, mache dich erstmal in der Konsole mit dem Framework vertraut), musst du (wie man oben lesen kann), irc.ListenOnce() benutzen (was dann wohl jeweils nur einmal die Loop durchläuft).


//Edit2: Beim TS fehlt es wohl am grundlegenden Verständnis, habe mir gerade eben nochmal den Code oben angeschaut.
Erstmal (nochmal): Lern, Dokumentationen zu lesen und zu vestehen. Das ist das A und O beim Nutzen fremder Libs.
2. Mach dir klar, wie dein Programm funktioniert. Wie funktioniert eine Konsolenanwendung, wie eine GUI-Anwendung? Wie werden die Events in einer GUI-Anwendung bearbeitet? Was ist eine "Mainloop"? Warum ist diese bei einer GUI-Anwendung notwendig? Warum bei dieser Netzwerklib? Was für ein Problem gibts beim Nutzen einer GUI-Anwendung und der Lib? Wie lässt es sich beheben?

Wenn du dir zu den Fragen die Antworten erarbeitest, wirst du die Lib ohne Probleme benutzen können (sowohl in GUI, als auch in Konsole).

//Edit3: Bei Möglichkeit vielleicht doch nochmal bei den Grundlagen beginnen. Dein Code ist ne Zumutung (bis auf den Teil, den du aus dem Beispiel kopiert hast).
Schlüsselbein is offline  
Old 06/06/2013, 16:57   #9
 
elite*gold: 0
Join Date: Jun 2013
Posts: 3
Received Thanks: 0
Erstmal danke. Und das der Code schrecklich ist weiß ich. Bin selber noch C# Anfänger habe vorher allerdings bereits viel mit php, java, js gearbeitet, weshalb mir der Umgang mit Libs/Plugins/Addons nicht unbekannt ist. Ich bedanke mich bei dir Schlüsselbein, habe mich dazu entschieden erst mal die anderen Punkte abzuarbeiten und mich dann später um den kleinen IRC Client zu kümmern. Habs mittlerweile halb hinbekommen, nachdem ich gemerkt habe das ich eine ältere Version der Lib hatte also in dem Beispiel auf github zu finden ist.

Nunja ich bedanke mich nochmals.

MfG
G-Mac_x3 is offline  
Reply


Similar Threads Similar Threads
[Problem]Habe ein Problem und zwar spinnt mein VPC etwas(ohne Grund)?!
07/28/2011 - Metin2 Private Server - 10 Replies
Also wie schon gesagt meins Server spinnt wodurch kiks usw. kommen :( ich lade euch die Screens in den Anhang, mit der Hoffnung, dass ihr mir helfen könnt :) wäre echt sehr nice :)



All times are GMT +1. The time now is 06:37.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.