Zum Inhalt springen

Suche samples wie man einen IRC client in C# schreibt


Empfohlene Beiträge

Geschrieben

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);

}

}

}

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...