Zum Inhalt springen

Suche samples wie man einen IRC client in C# schreibt


gicio

Empfohlene Beiträge

IrcBot.cs:

using System;

using System.Net;

using System.Net.Sockets;

using System.IO;

using System.Threading;

/*

* This program establishes a connection to irc server, joins a channel and greets every nickname that

* joins the channel.

*

* Coded by Pasi Havia 17.11.2001 http://koti.mbnet.fi/~curupted

*/

class IrcBot

{

// Irc server to connect

public static string SERVER = "irc.df.lth.se";

// Irc server's port (6667 is default port)

private static int PORT = 6667;

// User information defined in RFC 2812 (Internet Relay Chat: Client Protocol) is sent to irc server

private static string USER = "USER CSharpBot 8 * :I'm a C# irc bot";

// Bot's nickname

private static string NICK = "BotNick";

// Channel to join

private static string CHANNEL = "#my_channel";

// StreamWriter is declared here so that PingSender can access it

public static StreamWriter writer;

static void Main (string[] args)

{

NetworkStream stream;

TcpClient irc;

string inputLine;

StreamReader reader;

string nickname;

try

{

irc = new TcpClient (SERVER, PORT);

stream = irc.GetStream ();

reader = new StreamReader (stream);

writer = new StreamWriter (stream);

// Start PingSender thread

PingSender ping = new PingSender ();

ping.Start ();

writer.WriteLine (USER);

writer.Flush ();

writer.WriteLine ("NICK " + NICK);

writer.Flush ();

writer.WriteLine ("JOIN " + CHANNEL);

writer.Flush ();

while (true)

{

while ( (inputLine = reader.ReadLine () ) != null )

{

if (inputLine.EndsWith ("JOIN :" + CHANNEL) )

{

// Parse nickname of person who joined the channel

nickname = inputLine.Substring(1, inputLine.IndexOf ("!") - 1);

// Welcome the nickname to channel by sending a notice

writer.WriteLine ("NOTICE " + nickname + " :Hi " + nickname +

" and welcome to " + CHANNEL + " channel!");

writer.Flush ();

// Sleep to prevent excess flood

Thread.Sleep (2000);

}

}

// Close all streams

writer.Close ();

reader.Close ();

irc.Close ();

}

}

catch (Exception e)

{

// Show the exception, sleep for a while and try to establish a new connection to irc server

Console.WriteLine (e.ToString () );

Thread.Sleep (5000);

string[] argv = { };

Main (argv);

}

}

}

PingSender.cs:

using System;

using System.Threading;

/*

* Class that sends PING to irc server every 15 seconds

*/

class PingSender

{

static string PING = "PING :";

private Thread pingSender;

// Empty constructor makes instance of Thread

public PingSender ()

{

pingSender = new Thread (new ThreadStart (this.Run) );

}

// Starts the thread

public void Start ()

{

pingSender.Start ();

}

// Send PING to irc server every 15 seconds

public void Run ()

{

while (true)

{

IrcBot.writer.WriteLine (PING + IrcBot.SERVER);

IrcBot.writer.Flush ();

Thread.Sleep (15000);

}

}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...