首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IRC标识问题

IRC标识问题
EN

Stack Overflow用户
提问于 2013-02-13 08:56:26
回答 2查看 621关注 0票数 0

这就是我所得到的:

代码语言:javascript
复制
: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上听和写,但是我不知道我应该使用什么方法,或者我需要做什么。这是我的代码:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2013-02-13 09:05:01

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

票数 0
EN

Stack Overflow用户

发布于 2013-09-14 06:33:27

首先,你不能发送/commands,你必须发送正确的IRC命令。阅读关于它的RFC。客户端执行/commands,但它发送到实际服务器的内容是不同的。例如:"NICK newnick",而不是"/nick NEWNICK“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14844715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档