0

这就是我得到的:

: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

4

2 回答 2

0

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

于 2013-02-13T01:05:01.427 回答
0

首先,你不发送 /commands,你必须发送正确的 IRC 命令。阅读有关它的 RFC。客户端执行 /commands 但它发送到实际服务器的内容不同。即:“尼克纽尼克”,而不是“/尼克纽尼克”

于 2013-09-13T22:33:26.950 回答