⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ircbot.cs

📁 这是一本介绍Csharp示例的电子书
💻 CS
字号:
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;

class IrcBot
{
	// 待连接的IRC服务器,这里定义的是温州的IRC服务器 
	public static string SERVER = "irc.wz163.net";
	
	// IRC服务器的服务端口 (6667是IRC服务器的缺省端口)
	private static int PORT = 6667;

	// 待发送的信息(在RFC2812中定义)
	private static string USER = "USER liping 8 * :I'm a C# irc bot";
	
	// 自己的昵称
	private static string NICK = "Rose";

	// 待加入的频道名称
	private static string CHANNEL = "#my_channel";

	// 定义一个StreamWriter用来发送用户信息
	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);
			
			// 开始PingSender进程
			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) )
          				{
          					// 读取频道内其它朋友的昵称
          					nickname = inputLine.Substring(1, inputLine.IndexOf ("!") - 1);
          					
          					// 和频道内所有的朋友打招呼
        					writer.WriteLine ("NOTICE " + nickname + " :Hi " + nickname + 
        					" and welcome to " + CHANNEL + " channel!");
            					writer.Flush ();
            					
            					// Sleep以防止发包过快
            					Thread.Sleep (2000);
          				}
				}
				
				// 关闭所有的流
				writer.Close ();
				reader.Close ();
				irc.Close ();
			}
		}
		catch (Exception e)
		{
			// 显示错误,sleep过后重新连接IRC服务器
			Console.WriteLine (e.ToString () );
			Thread.Sleep (5000);
			string[] argv = { };
			Main (argv);
		}
	}
}

    /*
     *  每隔15秒给IRC服务器发送一个PING包
     */
class PingSender
{
    static string PING = "PING :";
    private Thread pingSender;
	
    // 构造函数,建立进程实例
    public PingSender () 
    {
        pingSender = new Thread (new ThreadStart (this.Run) ); 
    }

    // 开始进程
    public void Start () 
    { 
        pingSender.Start (); 
    }

    // 每隔15秒给IRC服务器发送PING包
    public void Run ()
    {
        while (true)
        {
            IrcBot.writer.WriteLine (PING + IrcBot.SERVER);
            IrcBot.writer.Flush ();
            Thread.Sleep (15000);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -