3

標準の GCC ライブラリを使用して IRC に接続できますか?

IRC プロトコルは非常に単純な TCP プロトコルであり、別のコンソールに接続するよりもはるかに難しくないことを理解しています。

ただし、IP とポートのみを必要とするコンソール接続と比較して、IRC に接続する場合は、ニックネームとチャネルが追加の要件になります。

これがどのように行われるかの例を誰かに見せてもらえますか?

4

1 に答える 1

16

もちろん、簡単にできます!これはかなり基本的な TCP プロトコルです。

GCC は単なるコンパイラ (およびリンカー) です。GCC と IRC の間に直接接続はありません。
サーバーに接続して通信するには、必要なのはsys/socket.h; 詳細には触れませんが、サーバー クライアント Linux の C/C++ プログラムに関する例とチュートリアルがたくさんあります。

telnet(コマンドライン telnet クライアント プログラム)を使用して、IRC プロトコルを見て理解しようとしましょう。

irc.freenode.netまず、サーバーへの接続を確立する必要があります (デフォルトのポートを使用しているとしましょう6667):

$ telnet irc.freenode.net 6667

サーバーは次のように応答します。

:sturgeon.freenode.net NOTICE * :*** Looking up your hostname...
:sturgeon.freenode.net NOTICE * :*** Checking Ident
:sturgeon.freenode.net NOTICE * :*** No Ident response
:sturgeon.freenode.net NOTICE * :*** Couldn't look up your hostname

ここで、 、 、 の 3 つを送信する必要がPASSありUSERますNICK

PASS接続パスワードを送信するコマンドです。公開サーバー (パスワードがない) では、PASS none.

USERユーザー名、ホスト名、実名をサーバーに伝えるコマンドです。たとえば、あなたがwhois誰かの場合username@1.2.3.4、彼の「本名」が表示されます。クライアントが接続を確立した直後に送信するデータ。

NICKニックネームを設定するコマンドです。もちろん、サーバーはあなたのニックネームを知っているはずなので、接続後すぐに送信する必要があります!

それで、私たちは接続を確立しました。次に、これらのコマンドを送信する必要があります。telnet に入力するだけです。

PASS none
NICK sorandom29      
USER blah blah blah blah

ウーフー、答えがあります!

:lindbohm.freenode.net 001 sorandom29 :Welcome to the freenode Internet Relay Chat Network sorandom29

もう 1 つの重要な点はPING、コマンドとコマンドがあるため、サーバーに aを長時間PONG応答しないと、接続が切断されることです。PONG

それがどのように行われるか見てみましょう。PING リクエストを受け取ります。

PING :lindbohm.freenode.net

そして、同じパラメータでそれに答えてください:

PONG :lindbohm.freenode.net

次に、どうすればチャンネルに参加できるのか疑問に思うかもしれません。

JOIN #linux

ええ、それだけです。

:lindbohm.freenode.net 470 sorandom29 #linux ##linux :Forwarding to another channel
:sorandom29!~blah JOIN ##linux
:lindbohm.freenode.net 332 sorandom29 ##linux :Welcome to ##Linux! Freenode's general Linux support/discussion channel.

別のコマンドはPRIVMSG、実際のメッセージをチャネルまたは他の誰かに送信します。

PRIVMSG #linux :hello guys! i'm using telnet to connect to irc and that's such a stupid idea, i have to respond to PINGs manually!

したがって、誰もが次の#linuxように表示されます。

<sorandom29> hello guys! i'm using telnet to connect to irc and that's such a stupid idea, i have to respond to PINGs manually!

:aはメッセージ自体の前のプレフィックスであることに注意してください。

IRCに入るにはそれで十分だと思います。IRC プロトコル自体について読んで、telnetまたはncを使って試してみてから、基本的なソケットを使用してプログラムをコーディングするだけで、他の多くのことを自分で試すことができます。

于 2012-09-30T12:36:31.153 に答える