2013-02-13 63 views
0

這就是我得到:IRC訂貨號問題

: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

回答

0

如果你真的要發送的ident響應(這通常是不需要的,通常是困難的,因爲你需要有從Internet訪問的端口),您需要一個單獨的TCP服務器偵聽端口113並實現ident協議。您可以使用System.Net.Sockets.TcpListener作爲服務器的基礎(請注意,您需要處理阻止等或使其成爲單獨的可執行文件)。對於協議本身,您可以直接在RFC 1413(該協議是基於行的並且非常簡單,尤其是您不需要正確實施並僅返回靜態假響應)。儘管如此,我不確定你是否需要一個ident服務器,即使你這樣做,你也需要自己實現它。

+0

它似乎是需要的,因爲服務器不接受我的IRC連接。還有什麼其他可能的事情會導致這種情況? – abcd3fg 2013-02-13 01:29:04

+0

@abcd3fg取決於,但值得注意的是,您發送到服務器的命令是完全錯誤的,您需要閱讀有關IRC協議。 – wRAR 2013-02-13 02:04:45

0

首先,你不發送/命令,你必須發送適當的IRC命令。閱讀有關它的RFC。客戶端/命令,但它發送到實際服務器的是不同的。 IE:「NICK newnick」,而不是「/ nick NEWNICK」