这就是我所得到的:
: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
发布于 2013-02-13 09:05:01
如果您确实想要发送ident响应(这通常不是必需的,而且通常很困难,因为您需要一个可从Internet访问的端口),则需要创建一个单独的TCP服务器来侦听端口113并实现ident协议。您可以使用System.Net.Sockets.TcpListener作为服务器的基础(请注意,您要么需要处理阻塞等问题,要么将其设置为单独的可执行文件)。对于协议本身,您可以直接在RFC 1413中查看(该协议是基于行的,并且非常简单,特别是您不需要正确地实现它,只返回一个静态的伪响应)。不过,我不确定你是否需要一个ident服务器,即使你需要,你也需要自己去实现它。
发布于 2013-09-14 06:33:27
首先,你不能发送/commands,你必须发送正确的IRC命令。阅读关于它的RFC。客户端执行/commands,但它发送到实际服务器的内容是不同的。例如:"NICK newnick",而不是"/nick NEWNICK“
https://stackoverflow.com/questions/14844715
复制相似问题