IRC标识问题

本文关键字:问题 标识 IRC | 更新日期: 2023-09-27 17:58:56

这就是我得到的:

:portlane.esper.net NOTICE * :*** Looking up your hostname...
:portlane.esper.net NOTICE * :*** Checking Ident
:portlane.esper.net NOTICE * :*** Found your hostname
:portlane.esper.net NOTICE * :*** No Ident response

我知道我需要在tcp:113上听和写,但我不知道我应该使用什么方法,也不知道我需要做什么。这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
namespace Bot
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void ConnectToServer(object sender, EventArgs e)
        {
            string Server = "irc.esper.net";
            int Port = 5555;
            string Nick = Nickname.Text;
            string Channel = ChannelName.Text;
            TcpClient IRCClient = new TcpClient(Server, Port);
            NetworkStream Stream = IRCClient.GetStream();
            StreamWriter Writer = new StreamWriter(Stream);
            Writer.NewLine = "'n'r";
            Writer.AutoFlush = true;
            Writer.WriteLine("/USER Bot Bot Bot :Bot");
            Writer.WriteLine("/nick " + Nick);
            Writer.WriteLine("/join " + Channel);
            Writer.WriteLine("Hello.");
            StreamReader Reader = new StreamReader(Stream);
            while (true)
            {
                Console.WriteLine(Reader.ReadLine());
            }
            Reader.Close();
            Writer.Close();
            Stream.Close();
            IRCClient.Close();
            Console.WriteLine("End of stream.");
        }
    }
}

如果你们中的任何一个人不介意的话,我们将不胜感激。

谢谢,

~abcd3fg

IRC标识问题

如果您真的想发送ident响应(这通常是不需要的,而且通常很困难,因为您需要有一个可以从Internet访问的端口),您需要让一个单独的TCP服务器侦听端口113并实现ident协议。您可以使用System.Net.Sockets.TcpListener作为服务器的基础(请注意,您要么需要处理阻塞等问题,要么将其作为一个单独的可执行文件)。对于协议本身,你可以直接在RFC 1413中查看(该协议是基于行的,非常简单,尤其是你不需要正确实现它,只需要返回一个静态的假响应)。不过,我不确定你是否需要一个ident服务器,即使你这样做了,你也需要自己实现它。

首先,你不发送/命令,你必须发送正确的IRC命令。阅读关于它的RFC。客户端执行/命令,但它发送到实际服务器的内容不同。IE:"尼克·纽尼克",而不是"/NICK newnick"