【问题标题】:Programming a simple IRC (Internet-Relay-Chat) Client编写一个简单的 IRC(Internet-Relay-Chat)客户端
【发布时间】:2010-09-06 15:53:09
【问题描述】:

我从小就开始使用 IRC,并且一直对它着迷。作为一个语言练习,我正在考虑用 Shoes 作为图形前端在 Ruby 中编写一个简单的 IRC 客户端。好心的先生们,我的问题是,我需要熟悉什么才能开始这次伟大的冒险(当然除了鞋子和 Ruby)?我想有某种关于 IRC 协议的规范。有什么指点吗?

【问题讨论】:

    标签: ruby shoes irc


    【解决方案1】:

    之前的一篇文章提到了 RFC1459。虽然这是对 IRC 的一个很好的介绍,但它实际上已被 RFC 2810-2813 所取代。以下是编写任何与 IRC 相关的程序所需的更完整的文档列表:

    【讨论】:

    • 请注意,RFC2810-RFC2813 是我的 IRCnet 单独编写的(在大拆分之后)。 IRCnet 基本上是唯一支持! 频道的主要网络。 005 解析和理解每个标记是.. 困难的。不同的网络支持其他频道模式(如qah 作为所有者、管理员和半运营商)
    • 005 解析其实并不复杂。不经常添加新令牌(在 IRCv3 被采用后,未来更是如此),解析当前令牌相当简单:github.com/cinchrb/cinch/blob/master/lib/cinch/isupport.rb
    • 你没有解析所有的令牌。您只需解析少数令牌,但不是全部。
    • 例如您不需要寻找 CNOTICECPRIVMSG 令牌。
    • 如果你仔细观察,你会发现那里的代码只有少数记号的特殊情况,并假定所有其他记号都是布尔值(例如CNOTICECPRIVMSG)或字符串值如果它们包含'='(例如SOMETHING=foobar)。所以它支持这些类型的任何未来令牌。事实上,任何对复杂标记值(如CHANMODES=b,k,l,imnpstr 中的值)的特殊解析都是为了方便。万一添加了类似的新令牌并且库还没有专门解析它,用户仍然能够以字符串的形式访问该值。
    【解决方案2】:

    IRC 规范在 RFC 1459 中列出

    http://www.irchelp.org/irchelp/rfc/rfc.html

    【讨论】:

      【解决方案3】:

      我在 Wikipedia 上找到了这颗宝石。听起来很吓人。

      其实不然。

      Telnet 到 IRC 服务器,亲眼目睹协议的简单性。最难的部分是握手,之后就很简单了。

      【讨论】:

      • +1 - 我通过 telnet 在 IRC 上聊天(仅针对极客点)
      【解决方案4】:

      我曾经用另外 2 个人实现了一个客户端和一个服务器(作为课程的一部分)。
      我可以告诉你,你已经链接到的 RFC 很棒。
      我还会尝试简单地嗅探与现有客户端的连接,以亲眼看看它们是如何工作的。

      【讨论】:

        【解决方案5】:

        不完全是您问题的答案,但它可能会有所帮助。如果您使用 Ruby,我发现 Autumn Leaves 项目是使用 Ruby 构建 IRC 机器人的好方法:

        http://github.com/RISCfuture/autumn/tree/master

        这几乎是 Ruby 世界的 Jibble。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-19
          • 1970-01-01
          • 2016-10-23
          • 1970-01-01
          • 2014-01-11
          • 1970-01-01
          相关资源
          最近更新 更多