2012-05-09 5 views
2

imは現在、簡単なIRC GUIクライアントを作成しようとしています。私が基本的にSmartIrc4netをベースとして使用しているので、ここでは最も支持的なようです:http://www.codeproject.com/Articles/8323/SmartIrc4net-the-C-IRC-libraryIRCクライアントでコマンドを使用する

今私が問題を抱えているのはアクションコマンドです。自分OPERにするたとえば、あなたが

/オペラ管理者パスワードを入力したりchangehostし、/ sethostだろうmynewhost

私の問題ではなく、管理者に私を作ることを、私はテキストボックスを通じてその値を渡すときということです、または私のホストを変更する。私の入力はチャットのテキストとして表示されます。ここで

は私のコードです:

 string[] serverlist; 
     serverlist = new string[] { "mydomain.com" }; 
     int port = 6667; 
     string channel = "#MyChannel#"; 
     try 
     { 
      irc.Connect(serverlist, port); 
      irc.Login("SmartIRC", "SmartIrc4net Test Bot"); 
      irc.RfcJoin(channel); 

       irc.SendMessage(SendType.Message, channel, "/oper admin mypass"); 
       irc.SendMessage(SendType.Action, channel, "/sethost mynewhost"); 

      irc.Listen(); 

しかし、私はそれらの値を渡すとき、それがないすべてはちょうど私が実際に私がOPER作る、または私のsethostを変更せずに、チャットで入力したものを表示しています。

チャットに原文を表示するのではなく、実際にIRCサーバーにコマンドを渡すことができますか?

すべてのヘルプは、明示的にメッセージを送信しているので、これがあるおかげで

+0

研究IRCプロトコルを見つけることができますRfc2812標準覗くすることをお勧めいたします。 IRCクライアントは/ operをPRIVMSGとして、OPERコマンドとしてサーバーに送信しません。いくつかのサーバに接続されたIRCクライアントを使用してwiresharkを実行し、コマンドを入力して、正確にワイヤを通じて送信されたものをWSから調べることができます。 – nothrow

+0

うん、私はちょうどWiresharkをチェックして、PRIVMSGを使って普通のメッセージが送信され、OPERやSETHOSTなどのコマンドにPRIVMSGのInfrontがないことに気づいた。今私はPPRIVMSGのInfrontを持っていないという私の命令をどうやって得るのですか?あなたの返信をありがとう –

答えて

2

、いただければ幸いです。 IRC自体には/commandsの概念がありません。これはすべてクライアントで行われます。あなたがやっていることは、ちょうど/で始まる特定のテキストのメッセージを送信することです。私。どのサーバが受信すると、あなただけのサーバーに生のIRCコマンドを送信する方法を把握する必要が

PRIVMSG #channel :/oper admin mypass 

代わりの

OPER admin mypass 

です。あなたがリンクしたページは、その部分に関する多くのドキュメントを提供していません。レイヤーから判断すると、レイヤー2またはレイヤー1のいずれかになります。

+0

テキストを生データに変換できるように、入力する必要がある特定のタイプのコードはありますか? –

+0

テキストボックスからコマンドを取得した場合、それを解析してメッセージやコマンドだけを送信するかどうかを判断する必要があります。 'tbInput.Text.StartsWith("/")'はそのような場合にチェックするのに適しているかもしれません。それでは、送信する必要があるものとそのパラメータを正確に把握する必要があります。 – Joey

+0

こんにちは、私はそれを試みたが運がない。しかし、ええ、私はWiresharkを実行し、私がメッセージを送ったときにコマンドでPRIVMSGを見たので、あなたが何を意味するかを正確に見ています。挿入される生データはテキストボックスからではなく、コードビハインドで指定されます。私がPRIVMSGなしでmsgを送るために必要なことについてのヒントを教えてください。私はこれを試してみることができました。ありがとうございました –

1

SendMessagesにはさらに多くのオプションがあります。

Operにはirc.RfcOper(username、pasword)という例があります。

flyサンプルのsethostでサポートされていないものに対してrawデータコマンドを送信する場合は、WriteLineを直接送信することができます。

irc.WriteLine( "sethost mynewhost")

オープンIrcCommands.csは、それらが転送される方法を確認するために、コマンドとRfc2812.csの一覧を表示します。

しかし私は、読み取りまたは少なくともあなたがここにhttp://tools.ietf.org/html/rfc2812

+0

こんにちは、私はRfc2812.csとIrcCommands.csを確認しましたが、どのように動作するか見ていますが、実際にはそれをどのように表示するかはわかりません。クラスにsethost関数を追加してコンパイルするだけでいいと思いますか? –

+0

私はあなたがしなければならないことをすでに正確に書いています。 2つのコード行を確認してください。 – Tenerezza

+0

OK私はあなたの問題を抱えていると思います。SmartIrc4Netの旧バージョンへの道のりはここですhttp://www.meebey.net/projects/smartirc4net/コードプロジェクトから取得したバージョンは0.2です。 0は最新です0.4.5.1 – Tenerezza

関連する問題