0

我正在用 c# 编写一个 IRC 客户端,但我总是收到“No ident response”消息并且它只是断开连接。

代码

TcpClient client = new TcpClient(args[0], port); 
sock.Connect(serverEndPoint);

NetworkStream stream = client.GetStream();
NetworkStream streamw = client.GetStream();

System.IO.StreamReader reader = new System.IO.StreamReader(stream);
System.IO.StreamWriter writer = new System.IO.StreamWriter(streamw);

writer.WriteLine("loaloaloa");
IPEndPoint rep = (IPEndPoint)sock.LocalEndPoint;

        while (true)
        {
            string bytes = reader.ReadLine();
            Console.WriteLine("Received: {0}", bytes);


            if (String.IsNullOrEmpty(bytes))
                break;
        }

这是消息

:kornbluth.freenode.net NOTICE * :*** Looking up your hostname...
:kornbluth.freenode.net NOTICE * :*** Checking Ident
:kornbluth.freenode.net NOTICE * :*** Found your hostname
:kornbluth.freenode.net NOTICE * :*** No Ident response
ERROR :Closing Link: 127.0.0.1 (Connection timed out)

我发现我必须在端口 113 上侦听才能获取消息,然后以相同的消息和更多信息进行响应。

所以我的问题是我如何开始监听端口 113,我将如何接受消息并响应?

4

1 回答 1

2

由于 @Miserable_Variable 已经链接到,您需要一个在 tcp:113 上运行的 ident 服务

在该端口上,您将收到来自 IRCd 的连接,该连接将为您提供类似

"xxxxx, 6667" 其中 xxxxx 是您这边 IRC 连接的端口号,显然 6667 是 IRCd 那边的端口号 ...

如果您回复“xxxxx, 6667 : USERID: UNIX: yyyyy”,其中 yyyyy 代表您的用户名,xxxxx 代表请求的端口号,IRCd 应该接受您的连接(除非您自己被禁止...)

于 2012-11-14T16:39:35.373 回答