我正在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,我将如何接受该消息并做出响应?
答案 0 :(得分:2)
由于@Miserable_Variable已经链接到,你需要在tcp上运行一个ident服务:113
在该端口上,您将收到来自IRCd的连接,它将为您提供类似
的连接" xxxxx,6667"其中xxxxx是您身边的IRC连接的端口号,显然6667是IRCd侧面的端口号...
如果您使用" xxxxx,6667回复:USERID:UNIX:yyyyy" yyyyy代表您的用户名和xxxxx代表请求的端口号,IRCd应该接受您的连接(除非您发现了禁令......)