在IRC DCC通信中,要启动连接,您必须向另一个人提供IP地址和端口。但是,您如何在IPv6世界中处理这个问题?
我正在用Java编写机器人的IRC框架部分,所以我需要能够处理各种情况。似乎没有一种标准的方法来处理这个
我通过IPv6对现有客户进行了一些测试(两个Teredo客户端通过Ipv6连接到freenode
我知道DCC协议有一些扩展,它们以人类可读的格式发送IP地址,但这些扩展不是标准的,也不是广泛支持的。发送0似乎不是我的机器人未来证明的合适方式。
现在我正在将IPv6地址转换为BigInteger,但另一方面弄清楚BigInteger是IPv4还是IPv6地址让我感到困惑(我之后会问如何做到这一点)。
TL; DR:在IPv6环境中处理DCC的适当方法是什么?我应该发送0,我是否应该发送任何内容并在机器人中引发其不受支持的异常,或者我应该发送怪物BigInteger?
答案 0 :(得分:5)
DCC没有正式的RFC,因此唯一真正的权威文件是最初的CTCP规范:
http://www.irchelp.org/irchelp/rfc/ctcpspec.html
哪种假设IPv4:
地址,端口和大小应以ASCII表示形式发送 通过将值转换为主机字节顺序形成的十进制整数 并将它们视为无符号长,无符号短,并且未签名 分别很长。
您可能想查看mIRC和irssi的用途,因为它们比Chatzilla和XChat更常用,并且可能提出了某种双方都可以接受的解决方案。