基于 .NET 的 IRC 服务器

Posted

技术标签:

【中文标题】基于 .NET 的 IRC 服务器【英文标题】:.NET based IRC Server 【发布时间】:2010-12-15 22:12:52 【问题描述】:

目前是否有使用 .NET 编写的 IRC 服务器(不是服务)?

我的一位同事以前从未使用过或听说过 IRC,这让我很惊讶,因为他熟悉 Jabber 和其他消息传递协议。

想向他展示使用 .NET 协议是多么简单(他知道 VB.NET、Flash 和 3D 设计,所以 .NET 可能是我向他展示的唯一方法)。

在我的搜索中只能找到客户端的代码,没有服务器。

有谁知道一个比较接近标准的?不需要像 nickserv 等花哨的东西。

注意:指服务器本身,如 UnrealIRCD 等;不是服务。

【问题讨论】:

注意:IRC 服务通常与 IRCD 一起实现,而不是作为其中的一部分。 (即 u 型机器人) 我指的是服务器而不是服务,我认为熟悉 IRC 服务器的人更容易识别守护进程。 codeplex.com 是搜索 C#/.NET 内容的好地方——很多项目,很多垃圾,但也有一些宝石。但在这种情况下,没有服务器......嗯:-/ @Aequitarium:我在您的帖子中主要指的是这一点:“任何人都知道,它相对接近标准?不需要像 nickserv 等花哨的东西。” @pst 不幸的是,只能找到客户,我知道没有理由在 .NET 中编写 IRCD,但我仍然认为 - 有人 - 现在会为了好玩而这样做,哈哈。 【参考方案1】:

快速搜索找到了我这个(相当旧的)...

http://sourceforge.net/projects/csharpircserv/


这部分代码监听传入的连接

    public cSocket(string Server, int Port)
    
        if(sock != null && sock.Connected)
        
            sock.Shutdown(SocketShutdown.Both);
            System.Threading.Thread.Sleep(10);
            sock.Close();
        
        sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);    
        IPEndPoint ep = new IPEndPoint(IPAddress.Parse(Server), Port);
        AsyncCallback onconnect = new AsyncCallback(OnConnect);
        sock.BeginConnect(ep, onconnect, sock);
    

这部分 Main.cs 对 Ping 的响应

    switch(sp[0].ToLower())
                        
                            case "ping":
                                s.Send("PONG :"+co[1]);
                                break;

【讨论】:

当我澄清问题时,我认为您正在输入,哈哈。表示服务器/守护进程,而不是服务。 我认为这确实会这样做,除非我误解了......我已经更新了我的答案。 这是服务(NickServ HostServ 等)连接到 IRC 服务器的方法,PONG 响应是客户端在 Pinged 时给出的。希望这是我想要的,不幸的是它不是:(

以上是关于基于 .NET 的 IRC 服务器的主要内容,如果未能解决你的问题,请参考以下文章

Linux终端 连接 freenode IRC

IRC

一个基于VB的简单IRC机器人服务器 - GeneBot & EvilBot

IRC

通过表单 vb.net 传递引用

.net 2.0 IRC 组件