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 応答を送信したい場合 (これは通常は不要であり、インターネットからアクセスできるポートが必要なため通常は困難です)、ポート 113 でリッスンし、ident プロトコルを実装する別の TCP サーバーを作成する必要があります。サーバーのベースとして使用できSystem.Net.Sockets.TcpListenerます(ブロッキングなどに対処するか、別の実行可能ファイルにする必要があることに注意してください)。プロトコル自体については、直接調べることができますRFC 1413(プロトコルは行ベースで非常に単純です。特に、適切に実装する必要はなく、静的な偽の応答を返すだけです)。それでも、ident サーバーが必要かどうかはわかりません。また、必要な場合でも、自分で実装する必要があります。

于 2013-02-13T01:05:01.427 に答える
0

まず第一に、/commands を送信しないでください。適切な IRC コマンドを送信する必要があります。それについてのRFCを読んでください。クライアントは /commands を実行しますが、実際のサーバーに送信するものは異なります。IE: 「/nick NEWNICK」ではなく「NICK newnick」

于 2013-09-13T22:33:26.950 に答える