我对IRC协议非常熟悉,正在用bcb6写一个客户端,据我分析你的状态如下: 你连不上服务器?IRC连接服务器时是这样操作的,首先你通过socket与server建产连接,在onconnect成功时,这个时候,你必须遵照IRC的协议,主动向server发送下列必不可少的两条信息来注册你的这个连接: 1,NICK 2,USER 如果这两条命令发送成功,服务器就接爱你的连接,服务器(并不是所有的)就会向你发送一条PING 消息,你在收到这个消息后,必须原封不动的将ping串内容做为PONG命令的参数再发回给服务器,表示你的连接是活动的。 然后,服务器就向你发送所有正常的消息,你只需要对所有的消息进行解析就可以了。 当然,要做一个IRC客户端,是需要吃透RFC1459协议的,工作最多的就是对各种不同的返回消息进行解析。 目前我的客户端已完成80%,但在写作的过程中,我有如下体会,到目前为止,我还不知道这是bcb6的缺陷还是bug: 1,服务器所有返回信息,应该都是以/r/n结尾的,就算是服务器将多条信息连在一起发送过来,也应该是以/r/n结束,我以前用vb和socket空件写IRC的时候,所有消息全是以/r/n结束的,这很好去分析。但在bcb的clientsocket空件里,它会自作聪明的对稍长一些的消息进行断行,分次发送过来,这样给消息的解析造成一些麻烦及难以处理的情况。 2,因为频道窗口,私聊窗口都需要动态创建,我的程序在运行一段时间(如10分钟)后,就可能会出一种EOutOfResource错误,并且,这种错误不能被try...catch捕捉到,这个问题至今没有解决,想了很多办法都没有解决掉。 这些希望对你的工程有所帮助。
IRC协议相关
最新推荐文章于 2025-06-19 09:13:05 发布